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 2014/12/12 02:29:57 UTC

[14/51] [partial] incubator-ranger git commit: RANGER-194: Rename packages from xasecure to apache ranger

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/security-admin/src/main/java/com/xasecure/service/XResourceService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/service/XResourceService.java b/security-admin/src/main/java/com/xasecure/service/XResourceService.java
deleted file mode 100644
index bbbf458..0000000
--- a/security-admin/src/main/java/com/xasecure/service/XResourceService.java
+++ /dev/null
@@ -1,1115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- package com.xasecure.service;
-
-import java.io.File;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map.Entry;
-
-import com.xasecure.common.ContextUtil;
-import com.xasecure.common.MessageEnums;
-import com.xasecure.common.PropertiesUtil;
-import com.xasecure.common.SearchCriteria;
-import com.xasecure.common.SearchField;
-import com.xasecure.common.SearchField.DATA_TYPE;
-import com.xasecure.common.SearchField.SEARCH_TYPE;
-import com.xasecure.common.SortField;
-import com.xasecure.common.StringUtil;
-import com.xasecure.common.UserSessionBase;
-import com.xasecure.common.XAConstants;
-import com.xasecure.view.VXResponse;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Service;
-
-import com.xasecure.biz.XABizUtil;
-import com.xasecure.common.AppConstants;
-import com.xasecure.common.view.VTrxLogAttr;
-import com.xasecure.db.XADaoManager;
-import com.xasecure.entity.*;
-import com.xasecure.util.XAEnumUtil;
-import com.xasecure.view.*;
-@Service
-@Scope("singleton")
-public class XResourceService extends
-		XResourceServiceBase<XXResource, VXResource> {
-
-	@Autowired
-	XPermMapService xPermMapService;
-
-	@Autowired
-	XAuditMapService xAuditMapService;
-
-	@Autowired
-	XUserService xUserService;
-
-	@Autowired
-	StringUtil stringUtil;
-	
-	@Autowired
-	XADaoManager xADaoManager;
-	@Autowired
-	XABizUtil xaBizUtil;
-	
-	@Autowired
-	XAEnumUtil xaEnumUtil;
-	
-	@Autowired
-	XPolicyService xPolicyService;
-
-	static HashMap<String, VTrxLogAttr> trxLogAttrs = new HashMap<String, VTrxLogAttr>();
-	
-	static String fileSeparator = PropertiesUtil.getProperty(
-			"xa.file.separator", "/");
-	
-	static {
-		trxLogAttrs.put("name", new VTrxLogAttr("name", "Resource Path", false));
-		trxLogAttrs.put("description", new VTrxLogAttr("description", "Policy Description", false));
-		trxLogAttrs.put("resourceType", new VTrxLogAttr("resourceType", "Policy Type", true));
-		trxLogAttrs.put("isEncrypt", new VTrxLogAttr("isEncrypt", "Policy Encryption", true));
-		trxLogAttrs.put("isRecursive", new VTrxLogAttr("isRecursive", "Is Policy Recursive", true));
-		trxLogAttrs.put("databases", new VTrxLogAttr("databases", "Databases", false));
-		trxLogAttrs.put("tables", new VTrxLogAttr("tables", "Tables", false));
-		trxLogAttrs.put("columnFamilies", new VTrxLogAttr("columnFamilies", "Column Families", false));
-		trxLogAttrs.put("columns", new VTrxLogAttr("columns", "Columns", false));
-		trxLogAttrs.put("udfs", new VTrxLogAttr("udfs", "UDF", false));
-		trxLogAttrs.put("resourceStatus", new VTrxLogAttr("resourceStatus", "Policy Status", true));
-		trxLogAttrs.put("tableType", new VTrxLogAttr("tableType", "Table Type", true));
-		trxLogAttrs.put("columnType", new VTrxLogAttr("columnType", "Column Type", true));
-		trxLogAttrs.put("policyName", new VTrxLogAttr("policyName", "Policy Name", false));
-		trxLogAttrs.put("topologies", new VTrxLogAttr("topologies", "Topologies", false));
-		trxLogAttrs.put("services", new VTrxLogAttr("services", "Services", false));
-		trxLogAttrs.put("assetType", new VTrxLogAttr("assetType", "Repository Type", true));
-	}
-
-	public XResourceService() {
-		searchFields.add(new SearchField("name", "obj.name",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("fullname", "obj.name",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("policyName", "obj.policyName",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("fullPolicyName", "obj.policyName",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("columns", "obj.columns", 
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("columnFamilies",
-				"obj.columnFamilies", SearchField.DATA_TYPE.STRING,
-				SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("tables", "obj.tables",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("udfs", "obj.udfs",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("databases", "obj.databases",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("assetId", "obj.assetId",
-				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("resourceType", "obj.resourceType",
-				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("isEncrypt", "obj.isEncrypt",
-				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("isRecursive", "obj.isRecursive",
-				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
-		
-		searchFields.add(new SearchField("groupName", "xxGroup.name",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL,
-				"XXPermMap xxPermMap, XXGroup xxGroup", "xxPermMap.resourceId "
-						+ "= obj.id and xxPermMap.groupId = xxGroup.id"));
-
-		searchFields.add(new SearchField("userName", "xUser.name",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL,
-				"XXPermMap xxPermMap, XXUser xUser", "xxPermMap.resourceId "
-						+ "= obj.id and xxPermMap.userId = xUser.id"));
-
-		searchFields.add(new SearchField("userId", "xxPermMap.userId",
-				SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL,
-				"XXPermMap xxPermMap", "xxPermMap.resourceId = obj.id "));
-
-		searchFields.add(new SearchField("groupId", "xxPermMap.groupId",
-				SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL,
-				"XXPermMap xxPermMap", "xxPermMap.resourceId = obj.id"));
-		
-		searchFields.add(new SearchField("assetType", "xxAsset.assetType",
-				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL,
-				"XXAsset xxAsset", "xxAsset.id = obj.assetId "));
-
-		searchFields.add(new SearchField("id", "obj.id", 
-				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("topologies", "obj.topologies",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("services", "obj.services",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("tableType", "obj.tableType",
-				DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("columnType", "obj.columnType",
-				DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("repositoryName", "xxAsset.name",
-				DATA_TYPE.STRING, SEARCH_TYPE.PARTIAL, "XXAsset xxAsset",
-				"xxAsset.id = obj.assetId"));
-		searchFields.add(new SearchField("resourceStatus",
-				"obj.resourceStatus", DATA_TYPE.INT_LIST, SEARCH_TYPE.FULL));
-
-		sortFields.add(new SortField("name", "obj.name"));
-		sortFields.add(new SortField("isRecursive", "obj.isRecursive"));
-		sortFields.add(new SortField("isEncrypt", "obj.isEncrypt"));
-		
-	}
-
-	@Override
-	protected void validateForCreate(VXResource vObj) {
-		if(vObj == null){
-			throw restErrorUtil.createRESTException("Policy not provided.", 
-					MessageEnums.DATA_NOT_FOUND);
-		}
-		Long assetId = vObj.getAssetId();
-		int assetType;
-		if(assetId != null){
-			XXAsset xAsset = xADaoManager.getXXAsset().getById(assetId);
-			if(xAsset != null){
-				assetType = xAsset.getAssetType();
-			} else {
-				throw restErrorUtil.createRESTException("The repository for which "
-						+ "the policy is created, doesn't exist in the system.", 
-						MessageEnums.OPER_NOT_ALLOWED_FOR_STATE);
-			}
-		} else {
-			logger.debug("Asset id not provided.");
-			throw restErrorUtil.createRESTException("Please provide repository"
-					+ " id for policy.", MessageEnums.OPER_NOT_ALLOWED_FOR_STATE);
-		}
-		
-		String resourceName = vObj.getName();
-//		Long resourceId = vObj.getId();
-//		int isRecursive = vObj.getIsRecursive();
-		if(stringUtil.isEmpty(resourceName)){
-			logger.error("Resource name not found for : " + vObj.toString());
-			throw restErrorUtil.createRESTException("Please provide valid resources.",
-					MessageEnums.INVALID_INPUT_DATA);
-		}
-		
-//		String[] resourceNameList = stringUtil.split(resourceName, ",");
-//		for(String resName : resourceNameList){
-//			List<XXResource> xXResourceList = null;
-//			if (assetType == AppConstants.ASSET_HDFS) {
-//				xXResourceList = appDaoManager.getXXResource()
-//						.findByResourceNameAndAssetIdAndRecursiveFlag(resName, assetId, isRecursive);			
-//			} else {
-//				xXResourceList = appDaoManager.getXXResource()
-//						.findByResourceNameAndAssetIdAndResourceType(vObj.getName(), 
-//								vObj.getAssetId(), vObj.getResourceType());
-//			}
-//			
-//			if (xXResourceList != null) {
-//				boolean similarPolicyFound = false;
-//				for(XXResource xxResource : xXResourceList){
-//					String dbResourceName = xxResource.getName();
-//					// Not checking dbResourceName to be null or empty 
-//					// as this should never be the case
-//					String[] resources = stringUtil.split(dbResourceName, ",");
-//					for(String dbResource: resources){
-//						if(dbResource.equalsIgnoreCase(resName)){
-//							if(resourceId!=null){
-//								Long dbResourceId = xxResource.getId();
-//								if(!resourceId.equals(dbResourceId)){
-//									similarPolicyFound = true;
-//									break;
-//								}
-//							} else {
-//								similarPolicyFound = true;
-//								break;
-//							}
-//						}
-//					}
-//					if(similarPolicyFound){
-//						break;
-//					}
-//				}
-//				if(similarPolicyFound){
-//					throw restErrorUtil.createRESTException(
-//							"Similar policy already exists for the resource : " + resName,
-//							MessageEnums.ERROR_DUPLICATE_OBJECT);
-//				}
-//			}
-//		}
-		
-//		if(vObj.getAssetType())
-		
-	}
-
-	@Override
-	protected void validateForUpdate(VXResource vObj, XXResource mObj) {
-		if (vObj != null && vObj.getAssetType() == AppConstants.ASSET_HDFS) {
-			if (!(vObj.getName() != null) || vObj.getName().isEmpty()) {
-				throw restErrorUtil.createRESTException("Please provide the "
-						+ "resource path.", MessageEnums.INVALID_INPUT_DATA);
-			}
-		}
-		if (!vObj.getName().equalsIgnoreCase(mObj.getName()) || 
-				vObj.getIsRecursive()!=mObj.getIsRecursive() || 
-				vObj.getResourceType() != mObj.getResourceType()) {
-			validateForCreate(vObj);
-		}
-		
-	}
-
-	@Override
-	public VXResource createResource(VXResource vXResource) {
-
-		VXResource resource = super.createResource(vXResource);
-		
-		List<VXAuditMap> newAuditMapList = new ArrayList<VXAuditMap>();
-		List<VXAuditMap> vxAuditMapList = vXResource.getAuditList();
-		if (vxAuditMapList != null) {
-			for (VXAuditMap vxAuditMap : vxAuditMapList) {
-				vxAuditMap.setResourceId(resource.getId());
-				vxAuditMap = xAuditMapService.createResource(vxAuditMap);
-				newAuditMapList.add(vxAuditMap);
-			}
-		}
-		
-		List<VXPermMap> newPermMapList = new ArrayList<VXPermMap>();
-		List<VXPermMap> vxPermMapList = vXResource.getPermMapList();
-		if (vxPermMapList != null) {
-			for (VXPermMap permMap : vxPermMapList) {
-				if (permMap.getUserId() == null && permMap.getGroupId() == null 
-						&& vxAuditMapList == null){
-					if(vxAuditMapList == null){
-						throw restErrorUtil.createRESTException("Please provide"
-								+ " valid group/user permissions for policy.", 
-								MessageEnums.INVALID_INPUT_DATA);
-					}
-				} else {
-					permMap.setResourceId(resource.getId());
-					permMap = xPermMapService.createResource(permMap);
-					newPermMapList.add(permMap);
-				}
-			}
-		}
-
-			
-		resource.setPermMapList(newPermMapList);
-		resource.setAuditList(newAuditMapList);
-		return resource;
-	}
-	@Override
-	public boolean deleteResource(Long id) {	
-		return super.deleteResource(id);		
-	}
-	
-	@Override
-	public VXResource populateViewBean(XXResource xXResource) {
-		VXResource vXResource = super.populateViewBean(xXResource);
-		populateAssetProperties(vXResource);
-		populatePermList(vXResource);
-		return vXResource;
-	}
-
-	private void populateAssetProperties(VXResource vXResource) {
-		XXAsset xxAsset = xADaoManager.getXXAsset().getById(
-				vXResource.getAssetId());
-		if (xxAsset != null) {
-			vXResource.setAssetName(xxAsset.getName());
-		}
-		vXResource.setAssetType(xxAsset.getAssetType());
-	}
-
-	private void populateAuditList(VXResource vXResource) {
-		SearchCriteria searchCriteria = new SearchCriteria();
-		searchCriteria.addParam("resourceId", vXResource.getId());
-		VXAuditMapList vXAuditMapList = xAuditMapService
-				.searchXAuditMaps(searchCriteria);
-		if (vXAuditMapList != null && vXAuditMapList.getResultSize() != 0) {
-			List<VXAuditMap> auditMapList = vXAuditMapList.getList();
-			vXResource.setAuditList(auditMapList);
-		}
-	}
-
-	private void populatePermList(VXResource vXResource) {
-		SearchCriteria searchCriteria = new SearchCriteria();
-		searchCriteria.addParam("resourceId", vXResource.getId());
-		VXPermMapList vXPermMapList = xPermMapService
-				.searchXPermMaps(searchCriteria);
-		if (vXPermMapList != null && vXPermMapList.getResultSize() != 0) {
-			List<VXPermMap> permMapList = vXPermMapList.getList();
-			vXResource.setPermMapList(permMapList);
-		}		
-	}
-
-	@Override
-	public VXResourceList searchXResources(SearchCriteria searchCriteria) {
-
-		VXResourceList returnList;
-		UserSessionBase currentUserSession = ContextUtil
-				.getCurrentUserSession();
-		// If user is system admin
-		if (currentUserSession.isUserAdmin()) {
-			returnList = super.searchXResources(searchCriteria);
-			
-		} else {// need to be optimize
-			returnList = new VXResourceList();
-			int startIndex = searchCriteria.getStartIndex();
-			int pageSize = searchCriteria.getMaxRows();
-			searchCriteria.setStartIndex(0);
-			searchCriteria.setMaxRows(Integer.MAX_VALUE);
-			List<XXResource> resultList = (List<XXResource>) searchResources(
-					searchCriteria, searchFields, sortFields, returnList);
-			List<XXResource> adminPermResourceList = new ArrayList<XXResource>();
-			for (XXResource xXResource : resultList) {
-				VXResponse vXResponse = xaBizUtil.hasPermission(populateViewBean(xXResource), 
-						AppConstants.XA_PERM_TYPE_ADMIN);
-				if(vXResponse.getStatusCode() == VXResponse.STATUS_SUCCESS){
-					adminPermResourceList.add(xXResource);
-				}
-			}
-
-			if (adminPermResourceList.size() > 0) {
-				populatePageList(adminPermResourceList, startIndex, pageSize,
-						returnList);
-			}
-		}
-		if(returnList!=null && returnList.getResultSize()>0){
-			for (VXResource vXResource : returnList.getVXResources()) {
-				populateAuditList(vXResource);
-			}
-		}
-		return returnList;
-	}
-
-	private void populatePageList(List<XXResource> resourceList,
-			int startIndex, int pageSize, VXResourceList vxResourceList) {
-		List<VXResource> onePageList = new ArrayList<VXResource>();
-		for (int i = startIndex; i < pageSize + startIndex
-				&& i < resourceList.size(); i++) {
-			VXResource vXResource = populateViewBean(resourceList.get(i));
-			onePageList.add(vXResource);
-		}
-		vxResourceList.setVXResources(onePageList);
-		vxResourceList.setStartIndex(startIndex);
-		vxResourceList.setPageSize(pageSize);
-		vxResourceList.setResultSize(onePageList.size());
-		vxResourceList.setTotalCount(resourceList.size());
-
-	}
-
-	@Override
-	protected XXResource mapViewToEntityBean(VXResource vObj, XXResource mObj, int OPERATION_CONTEXT) {
-		super.mapViewToEntityBean(vObj, mObj, OPERATION_CONTEXT);
-		mObj.setUdfs(vObj.getUdfs());
-		if(vObj!=null && mObj!=null){
-			XXPortalUser xXPortalUser= null;
-			if(mObj.getAddedByUserId()==null || mObj.getAddedByUserId()==0){
-				if(!stringUtil.isEmpty(vObj.getOwner())){
-					xXPortalUser=xADaoManager.getXXPortalUser().findByLoginId(vObj.getOwner());	
-					if(xXPortalUser!=null){
-						mObj.setAddedByUserId(xXPortalUser.getId());
-					}
-				}
-			}
-			if(mObj.getUpdatedByUserId()==null || mObj.getUpdatedByUserId()==0){
-				if(!stringUtil.isEmpty(vObj.getUpdatedBy())){
-					xXPortalUser= xADaoManager.getXXPortalUser().findByLoginId(vObj.getUpdatedBy());			
-					if(xXPortalUser!=null){
-						mObj.setUpdatedByUserId(xXPortalUser.getId());
-					}		
-				}
-			}
-			
-		}
-		return mObj;
-	}
-
-	@Override
-	protected VXResource mapEntityToViewBean(VXResource vObj, XXResource mObj) {
-		super.mapEntityToViewBean(vObj, mObj);
-		vObj.setUdfs(mObj.getUdfs());
-		populateAssetProperties(vObj);
-		if(mObj!=null && vObj!=null){			
-			XXPortalUser xXPortalUser= null;
-			if(stringUtil.isEmpty(vObj.getOwner())){
-				xXPortalUser=xADaoManager.getXXPortalUser().getById(mObj.getAddedByUserId());		
-				if(xXPortalUser!=null){
-					vObj.setOwner(xXPortalUser.getLoginId());
-				}
-			}
-			if(stringUtil.isEmpty(vObj.getUpdatedBy())){
-				xXPortalUser= xADaoManager.getXXPortalUser().getById(mObj.getUpdatedByUserId());		
-				if(xXPortalUser!=null){
-					vObj.setUpdatedBy(xXPortalUser.getLoginId());
-				}	
-			}
-		}
-		return vObj;
-	}
-
-	/**
-	 * check resource parent path permission for user and group
-	 * @param vXResource
-	 */
-	public void checkAccess(VXResource vXResource) {
-		
-		XXAsset xxAsset = xADaoManager.getXXAsset().getById(
-				vXResource.getAssetId());
-		if (xxAsset == null) {
-			throw restErrorUtil
-					.createRESTException("Asset not found",
-							MessageEnums.DATA_NOT_FOUND, vXResource.getId(),
-							null, null);
-		}
-		int assetType = xxAsset.getAssetType();
-
-		if(assetType==AppConstants.ASSET_HDFS){
-		
-//		int resourceType = vXResource.getResourceType();
-		int resourceType = xPolicyService.getResourceType(vXResource);
-		List<Integer> resourceTypeList = xaBizUtil
-				.getResorceTypeParentHirearchy(resourceType, assetType);
-		
-		List<String> pathList = new ArrayList<String>();
-		String resourceNames = vXResource.getName();
-		String[] resourceList = stringUtil.split(resourceNames, ",");
-		List<String> resourceArrayList=new ArrayList<String>();		
-		if(resourceList!=null && resourceList.length>0)
-		{
-			Collections.addAll(resourceArrayList, resourceList);			
-		}
-		
-		for (String resourceName : resourceList) {
-			String policyPath = resourceName;
-			String[] policyPathParts = policyPath.split(fileSeparator);
-			
-			if(policyPathParts.length>1){
-				pathList.add(fileSeparator);
-			}
-			
-			StringBuffer path = new StringBuffer();
-			for (int i = 1; i < policyPathParts.length - 1; i++) {
-				path.append(fileSeparator + policyPathParts[i]);
-				pathList.add(path.toString());
-			}
-			if(path!=null){
-				if(resourceArrayList.contains(path.toString())){
-					continue;
-				}
-				if(resourceArrayList.contains(path.toString()+"/")){
-					continue;
-				}
-			}
-			
-			if (pathList != null && pathList.size() != 0) {
-				List<VXPermMap> vxPermMaps = vXResource.getPermMapList();
-				//update perm list and read and execute 
-				vxPermMaps=updatePermMaps(vxPermMaps);
-				for (VXPermMap vxPermMap : vxPermMaps) {
-					//check only read and execution permission
-					if (vxPermMap.getPermFor() == AppConstants.XA_PERM_FOR_USER
-							&&(vxPermMap.getPermType()==AppConstants.XA_PERM_TYPE_READ || 
-									vxPermMap.getPermType()==AppConstants.XA_PERM_TYPE_EXECUTE)) {
-						boolean access = checkUserAccess(vxPermMap, pathList,
-								vXResource.getAssetId(),
-								vXResource.getIsRecursive(), assetType,
-								resourceTypeList);
-
-						if (!access) {
-							XXUser xxUser = xADaoManager.getXXUser().getById(
-									vxPermMap.getUserId());
-							throw restErrorUtil.createRESTException(
-											xxUser.getName() + " may not have "
-													+ AppConstants.getLabelFor_XAPermType(
-															vxPermMap.getPermType()).toLowerCase()
-													+ " permission on parent folder. Do you want to save this policy?"
-													,
-											MessageEnums.OPER_NO_PERMISSION,
-											null, "parentPermission", null);
-							
-						}
-					}
-					//check only read and execution permission
-					if (vxPermMap.getPermFor() == AppConstants.XA_PERM_FOR_GROUP
-							&&(vxPermMap.getPermType()==AppConstants.XA_PERM_TYPE_READ || 
-							vxPermMap.getPermType()==AppConstants.XA_PERM_TYPE_EXECUTE)) {
-						boolean access = checkGroupAccess(vxPermMap, pathList,
-								vXResource.getAssetId(),
-								vXResource.getIsRecursive(), assetType,
-								resourceTypeList);
-						if (!access) {
-							XXGroup xxGroup = xADaoManager.getXXGroup()
-									.getById(vxPermMap.getGroupId());
-							throw restErrorUtil.createRESTException(xxGroup
-									.getName() + " may not have " + AppConstants
-									.getLabelFor_XAPermType(vxPermMap.getPermType()).toLowerCase()
-									+ " permission on parent folder. Do you want to save this policy?"
-									,
-									MessageEnums.OPER_NO_PERMISSION, null, 
-									"parentPermission", null);
-						}
-					}
-				}
-			}
-		}
-		}
-	}
-
-	/**
-	 * check user permission
-	 * 
-	 * @param vxPermMap
-	 * @param pathList
-	 * @return
-	 */
-	public boolean checkUserAccess(VXPermMap vxPermMap, List<String> pathList,
-			Long assetId, int isRecursive, int assetType,
-			List<Integer> resourceTypeList) {
-		boolean isAccess = false;
-		boolean isRecursivlyAllowed;
-		// all possible path and check access on all path
-		for (int i = 0; i < pathList.size(); i++) {
-			isAccess = false;
-			isRecursivlyAllowed = false;
-			HashMap<String, Object> accessMap = fetchUserAccessMap(
-					vxPermMap.getUserId(), vxPermMap.getPermType(),
-					pathList.get(i), assetType, assetId, isRecursive,
-					resourceTypeList);
-			//isAccess = Boolean.getBoolean(""+accessMap.get("isAccess"));
-			//isRecursivlyAllowed = Boolean.getBoolean(""+accessMap.get("isRecursive"));
-			isAccess=(Boolean)accessMap.get("isAccess");
-			isRecursivlyAllowed=(Boolean)accessMap.get("isRecursive");
-			// if user have recursively access then return true
-			if (isAccess && isRecursivlyAllowed) {
-				return true;
-			}
-			// access fail for root folder return false
-			if (!isAccess) {
-				break;
-			}
-
-		}
-		return isAccess;
-	}
-
-	/**
-	 * check group permission on path
-	 * 
-	 * @param vxPermMap
-	 * @param pathList
-	 * @return
-	 */
-	public boolean checkGroupAccess(VXPermMap vxPermMap, List<String> pathList,
-			Long assetId, int isRecursive, int assetType,
-			List<Integer> resourceTypeList) {
-		boolean isAccess = false;
-		boolean isRecursivlyAllowed;
-		for (int i = 0; i < pathList.size(); i++) {
-			isAccess = false;
-			isRecursivlyAllowed = false;
-			HashMap<String, Object> accessMap = fetchGroupAccessMap(
-					vxPermMap.getGroupId(), vxPermMap.getPermType(),
-					pathList.get(i), assetType, assetId, isRecursive,
-					resourceTypeList);
-			isAccess = Boolean.getBoolean(""+accessMap.get("isAccess"));
-			isRecursivlyAllowed = Boolean.getBoolean(""+accessMap.get("isRecursive"));
-			if (isAccess && isRecursivlyAllowed) {
-				return true;
-			}
-			if (!isAccess) {
-				break;
-			}
-
-		}
-		return isAccess;
-	}
-
-	public HashMap<String, Object> fetchUserAccessMap(Long userId,
-			int permType, String path, int assetType, Long assetId,
-			int isRecursive, List<Integer> resourceTypeList) {
-		HashMap<String, Object> accessMap = new HashMap<String, Object>();
-		boolean isAccess = false;
-		List<XXGroup> xGroupList = xADaoManager.getXXGroup().findByUserId(
-				userId);
-		boolean isRecursivlyAllowed = false;
-		List<XXResource> xXResourceList = null;
-		if (assetType == AppConstants.ASSET_HDFS) {
-			xXResourceList = xADaoManager.getXXResource().findByAssetId(
-					assetId);
-			//this code block is to add record of 'public' group in group_user mapping list.
-			XXGroup xXGroupPublic = xADaoManager.getXXGroup().
-					findByGroupName(XAConstants.GROUP_PUBLIC);
-			if (xXGroupPublic != null
-					&& xXGroupPublic.getName().trim()
-							.equalsIgnoreCase(XAConstants.GROUP_PUBLIC)) {
-				if(xGroupList!=null){
-					xGroupList.add(xXGroupPublic);
-				}else{
-					xGroupList=new ArrayList<XXGroup>();
-					xGroupList.add(xXGroupPublic);
-				}
-			}
-		} else {
-			xXResourceList = xADaoManager.getXXResource()
-					.findByAssetIdAndResourceTypes(assetId, resourceTypeList);
-		}
-		String expandedName = xaBizUtil.replaceMetaChars(path);
-		if (xXResourceList != null) {
-			// If resource name is comma separated, then we need to check each
-			// of the resources
-			for (XXResource xResource : xXResourceList) {
-				String resource = xResource.getName();
-
-				if (resource == null || resource.isEmpty()) {
-					logger.debug("Resource name not found for resourceId : "
-							+ xResource.getId());
-					throw restErrorUtil.createRESTException(
-							"Resource name not found.",
-							MessageEnums.DATA_NOT_FOUND);
-				}
-
-				String[] dbResourceNameList = resource.split(",");
-				boolean matchFound = false;
-				for (String dbResourceName : dbResourceNameList) {
-					String[] requestResNameList = expandedName.split(",");
-					for (String resourceName : requestResNameList) {
-						if (xaBizUtil.comparePathsForExactMatch(resourceName,
-								dbResourceName)) {
-							matchFound = true;
-						} else {
-							// resource name has a file extension then don't
-							// append "/*"
-							// "/*" is required for directory matching
-							if (xResource.getIsRecursive() == AppConstants.BOOL_TRUE) {
-								matchFound = xaBizUtil
-										.isRecursiveWildCardMatch(resourceName,
-												dbResourceName);
-							} else {
-								matchFound = xaBizUtil
-										.nonRecursiveWildCardMatch(
-												resourceName, dbResourceName);
-							}
-						}
-						if (matchFound) {
-							break;
-						}
-					}
-					if (matchFound) {
-						break;
-					}
-				}
-				if (matchFound) {
-					// get the perms for this resource
-					List<XXPermMap> permMapList = xADaoManager.getXXPermMap()
-							.findByResourceId(xResource.getId());
-					for (XXPermMap permMap : permMapList) {
-						if (permMap.getPermType() == permType) {
-							if (permMap.getPermFor() == AppConstants.XA_PERM_FOR_GROUP
-									&& xaBizUtil.isGroupInList(
-											permMap.getGroupId(), xGroupList)) {
-								isAccess = true;
-								isRecursivlyAllowed = xResource.getIsRecursive() == AppConstants.BOOL_TRUE ? true
-										: false;
-							} else if (permMap.getPermFor() == AppConstants.XA_PERM_FOR_USER
-									&& permMap.getUserId().equals(userId)) {
-								isAccess = true;
-								isRecursivlyAllowed = xResource.getIsRecursive() == AppConstants.BOOL_TRUE ? true
-										: false;
-							}
-						}
-					}
-				}
-			}
-		}
-		accessMap.put("isAccess", isAccess);
-		accessMap.put("isRecursive", isRecursivlyAllowed);
-		return accessMap;
-	}
-
-	public HashMap<String, Object> fetchGroupAccessMap(Long groupId,
-			int permType, String path, int assetType, Long assetId,
-			int isRecursive, List<Integer> resourceTypeList) {
-		
-		boolean isAccess = false;
-		boolean isRecursivlyAllowed = false;
-		HashMap<String, Object> accessMap = new HashMap<String, Object>();
-		List<XXResource> xXResourceList = new ArrayList<XXResource>();
-		
-		if (assetType == AppConstants.ASSET_HDFS) {
-			xXResourceList = xADaoManager.getXXResource().findByAssetId(
-					assetId);
-		} else {
-			xXResourceList = xADaoManager.getXXResource()
-					.findByAssetIdAndResourceTypes(assetId, resourceTypeList);
-		}
-		
-		String expandedName = xaBizUtil.replaceMetaChars(path);
-		
-		for (XXResource xResource : xXResourceList) {
-			String resource = xResource.getName();
-
-			if (resource == null || resource.isEmpty()) {
-				logger.debug("Resource name not found for resourceId : "
-						+ xResource.getId());
-				throw restErrorUtil.createRESTException(
-						"Resource name not found.",
-						MessageEnums.DATA_NOT_FOUND);
-			}
-			
-			String[] dbResourceNameList = resource.split(",");
-			boolean matchFound = false;
-			
-			for (String dbResourceName : dbResourceNameList) {
-				
-				String[] requestResNameList = expandedName.split(",");
-				for (String resourceName : requestResNameList) {
-					if (xaBizUtil.comparePathsForExactMatch(resourceName,
-							dbResourceName)) {
-						matchFound = true;
-					} else {
-						// resource name has a file extension then don't
-						// append "/*"
-						// "/*" is required for directory matching
-						if (xResource.getIsRecursive() == AppConstants.BOOL_TRUE) {
-							matchFound = xaBizUtil
-									.isRecursiveWildCardMatch(resourceName,
-											dbResourceName);
-						} else {
-							matchFound = xaBizUtil
-									.nonRecursiveWildCardMatch(
-											resourceName, dbResourceName);
-						}
-					}
-					if (matchFound) {
-						break;
-					}
-				}
-				if (matchFound) {
-					break;
-				}
-			}
-			if (matchFound) {
-				// get the perms for this resource
-				List<XXPermMap> permMapList = xADaoManager.getXXPermMap()
-						.findByResourceId(xResource.getId());
-				for (XXPermMap permMap : permMapList) {
-					if (permMap.getPermType() == permType) {
-						if (permMap.getPermFor() == AppConstants.XA_PERM_FOR_GROUP
-								&& permMap.getGroupId().doubleValue() == groupId.doubleValue()) {
-							isAccess = true;
-							isRecursivlyAllowed = (xResource.getIsRecursive() == AppConstants.BOOL_TRUE);
-						}
-					}
-				}
-			}
-		}
-		
-		accessMap.put("isAccess", isAccess);
-		accessMap.put("isRecursive", isRecursivlyAllowed);
-		return accessMap;
-	}
-
-	public List<VXPermMap> updatePermMaps(List<VXPermMap> vxPermMaps) {
-		List<VXPermMap> updatedPermList = new ArrayList<VXPermMap>();
-
-		List<Long> listOfUser = new ArrayList<Long>();
-		List<Long> listOfGroup = new ArrayList<Long>();
-
-		//[1] : Populate perm maps for user and groups
-		for (VXPermMap vxPermMap : vxPermMaps) {
-			if (vxPermMap.getPermFor() == AppConstants.XA_PERM_FOR_USER) {
-				if (!listOfUser.contains(vxPermMap.getUserId())) {
-					listOfUser.add(vxPermMap.getUserId());
-				}
-			} else if (vxPermMap.getPermFor() == AppConstants.XA_PERM_FOR_GROUP) {
-				if (!listOfGroup.contains(vxPermMap.getGroupId())) {
-					listOfGroup.add(vxPermMap.getGroupId());
-				}
-			}
-		}
-
-		HashMap<Long, HashMap<Integer, VXPermMap>> userPermMap = 
-				new HashMap<Long, HashMap<Integer, VXPermMap>>();
-		
-		for (Long userId : listOfUser) {
-			HashMap<Integer, VXPermMap> userPerm = new HashMap<Integer, VXPermMap>();
-			for (VXPermMap vxPermMap : vxPermMaps) {
-				if (vxPermMap.getPermFor() == AppConstants.XA_PERM_FOR_USER
-						&& vxPermMap.getUserId() == userId) {
-					userPerm.put(vxPermMap.getPermType(), vxPermMap);
-				}
-			}
-			userPermMap.put(userId, userPerm);
-		}
-
-		//[2] : 
-		HashMap<Long, HashMap<Integer, VXPermMap>> groupPermMap = 
-				new HashMap<Long, HashMap<Integer, VXPermMap>>();
-		
-		for (Long groupId : listOfGroup) {
-			HashMap<Integer, VXPermMap> groupPerm = new HashMap<Integer, VXPermMap>();
-			for (VXPermMap vxPermMap : vxPermMaps) {
-				Long permGroupId = vxPermMap.getGroupId();
-				int permFor = vxPermMap.getPermFor();
-				if (permFor == AppConstants.XA_PERM_FOR_GROUP
-						&& permGroupId.equals(groupId)) {
-					groupPerm.put(vxPermMap.getPermType(), vxPermMap);
-				}
-			}
-			groupPermMap.put(groupId, groupPerm);
-		}
-		
-		for (Long userId : listOfUser) {
-			HashMap<Integer, VXPermMap> map = userPermMap.get(userId);
-			VXPermMap vxPermMap = null;
-			
-			for (Entry<Integer, VXPermMap> perm : map.entrySet()) {
-				vxPermMap = perm.getValue();
-				break;
-			}
-			
-			if (map.size() > 0 && map.get(AppConstants.XA_PERM_TYPE_READ) == null) {
-				vxPermMap.setPermType(AppConstants.XA_PERM_TYPE_READ);
-				map.put(AppConstants.XA_PERM_TYPE_READ, vxPermMap);
-			}
-			
-			if (map.size() > 1 && map.get(AppConstants.XA_PERM_TYPE_EXECUTE) == null) {
-				vxPermMap.setPermType(AppConstants.XA_PERM_TYPE_EXECUTE);
-				map.put(AppConstants.XA_PERM_TYPE_EXECUTE, vxPermMap);
-			}
-			userPermMap.put(userId, map);
-		}
-		
-		for (Long groupId : listOfGroup) {
-			HashMap<Integer, VXPermMap> map = groupPermMap.get(groupId);
-			VXPermMap vxPermMap = null;
-			
-			for (Entry<Integer, VXPermMap> perm : map.entrySet()) {
-				vxPermMap = perm.getValue();
-				break;
-			}
-
-			if (map.size() > 0 && map.get(AppConstants.XA_PERM_TYPE_READ) == null) {
-				vxPermMap.setPermType(AppConstants.XA_PERM_TYPE_READ);
-				map.put(AppConstants.XA_PERM_TYPE_READ, vxPermMap);
-			}
-			
-			if (map.size() > 1 && map.get(AppConstants.XA_PERM_TYPE_EXECUTE) == null) {
-				vxPermMap.setPermType(AppConstants.XA_PERM_TYPE_EXECUTE);
-				map.put(AppConstants.XA_PERM_TYPE_EXECUTE, vxPermMap);
-			}
-			groupPermMap.put(groupId, map);
-		}
-		
-		// [3] :
-		for (Entry<Long, HashMap<Integer, VXPermMap>> entry : userPermMap
-				.entrySet()) {
-			for (Entry<Integer, VXPermMap> innerEntry : entry.getValue()
-					.entrySet()) {
-				updatedPermList.add(innerEntry.getValue());
-			}
-		}
-		
-		for (Entry<Long, HashMap<Integer, VXPermMap>> entry : groupPermMap
-				.entrySet()) {
-			for (Entry<Integer, VXPermMap> innerEntry : entry.getValue()
-					.entrySet()) {
-				updatedPermList.add(innerEntry.getValue());
-			}
-		}
-		
-		return updatedPermList;
-	}
-
-	public List<XXTrxLog> getTransactionLog(VXResource vResource, String action){
-		return getTransactionLog(vResource, null, action);
-	}
-	
-	public List<XXTrxLog> getTransactionLog(VXResource vObj, XXResource mObj, String action){
-		if(vObj == null && (action == null || !action.equalsIgnoreCase("update"))){
-			return null;
-		}
-
-		XXAsset xAsset = xADaoManager.getXXAsset().getById(vObj.getAssetId());
-		String parentObjectName = xAsset.getName();
-		
-		List<XXTrxLog> trxLogList = new ArrayList<XXTrxLog>();
-		Field[] fields = vObj.getClass().getDeclaredFields();
-
-		Field nameField;
-		try {
-			nameField = vObj.getClass().getDeclaredField("name");
-			nameField.setAccessible(true);
-			String objectName = ""+nameField.get(vObj);
-
-			for(Field field : fields){
-				field.setAccessible(true);
-				String fieldName = field.getName();
-				if(!trxLogAttrs.containsKey(fieldName)){
-					continue;
-				}
-				
-				int policyType = vObj.getAssetType();
-				if(policyType == AppConstants.ASSET_HDFS){
-					String[] ignoredAttribs = {"tableType", "columnType", "isEncrypt", "databases", 
-							"tables", "columnFamilies",  "columns", "udfs"};
-					if(ArrayUtils.contains(ignoredAttribs, fieldName)){
-						continue;
-					}
-				} else if(policyType == AppConstants.ASSET_HIVE) {
-					String[] ignoredAttribs = {"name", "isRecursive", "isEncrypt", "columnFamilies"};
-					if(ArrayUtils.contains(ignoredAttribs, fieldName)){
-						continue;
-					}
-				} else if(policyType == AppConstants.ASSET_HBASE){
-					String[] ignoredAttribs = {"name", "tableType", "columnType", "isRecursive", "databases", 
-							"udfs"};
-					if(ArrayUtils.contains(ignoredAttribs, fieldName)){
-						continue;
-					}
-				} else if(policyType == AppConstants.ASSET_KNOX || policyType == AppConstants.ASSET_STORM){
-					String[] ignoredAttribs = {"name", "tableType", "columnType", "isEncrypt", "databases", 
-							"tables", "columnFamilies",  "columns", "udfs"};
-					if(ArrayUtils.contains(ignoredAttribs, fieldName)){
-						continue;
-					}
-				}
-				
-				VTrxLogAttr vTrxLogAttr = trxLogAttrs.get(fieldName);
-				
-				XXTrxLog xTrxLog = new XXTrxLog();
-				xTrxLog.setAttributeName(vTrxLogAttr.getAttribUserFriendlyName());
-			
-				String value = null;
-				boolean isEnum = vTrxLogAttr.isEnum();
-				if(isEnum){
-					String enumName = XXResource.getEnumName(fieldName);
-					if(enumName==null && fieldName.equals("assetType")){
-						enumName="CommonEnums.AssetType";
-					}
-					int enumValue = field.get(vObj) == null ? 0 : Integer.parseInt(""+field.get(vObj));
-					value = xaEnumUtil.getLabel(enumName, enumValue);
-				} else {
-					value = ""+field.get(vObj);
-					if(value == null || value.equalsIgnoreCase("null")){
-						continue;
-					}
-				}
-				
-				if(action.equalsIgnoreCase("create")){
-					if(stringUtil.isEmpty(value)){
-						continue;
-					}
-					xTrxLog.setNewValue(value);
-				} else if(action.equalsIgnoreCase("delete")){
-					xTrxLog.setPreviousValue(value);
-				} else if(action.equalsIgnoreCase("update")){
-					String oldValue = null;
-					Field[] mFields = mObj.getClass().getDeclaredFields();
-					for(Field mField : mFields){
-						mField.setAccessible(true);
-						String mFieldName = mField.getName();
-						if(fieldName.equalsIgnoreCase(mFieldName)){
-							if(isEnum){
-								String enumName = XXResource.getEnumName(mFieldName);
-								if(enumName==null && mFieldName.equals("assetType")){
-									enumName="CommonEnums.AssetType";
-								}
-								int enumValue = mField.get(mObj) == null ? 0 : Integer.parseInt(""+mField.get(mObj));
-								oldValue = xaEnumUtil.getLabel(enumName, enumValue);
-							} else {
-								oldValue = mField.get(mObj)+"";
-							}
-							break;
-						}
-					}
-					if(value.equalsIgnoreCase(oldValue) && !fieldName.equals("policyName")){
-						continue;
-					}
-					xTrxLog.setPreviousValue(oldValue);
-					xTrxLog.setNewValue(value);
-				}
-				
-				xTrxLog.setAction(action);
-				xTrxLog.setObjectClassType(AppConstants.CLASS_TYPE_XA_RESOURCE);
-				xTrxLog.setObjectId(vObj.getId());
-				xTrxLog.setParentObjectClassType(AppConstants.CLASS_TYPE_XA_ASSET);
-				xTrxLog.setParentObjectId(vObj.getAssetId());
-				xTrxLog.setParentObjectName(parentObjectName);
-				xTrxLog.setObjectName(objectName);
-				trxLogList.add(xTrxLog);
-			
-			}
-				
-		} catch (IllegalArgumentException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
-		} catch (NoSuchFieldException e) {
-			e.printStackTrace();
-		} catch (SecurityException e) {
-			e.printStackTrace();
-		}
-		
-		if(trxLogList.size()==0){
-			XXTrxLog xTrxLog = new XXTrxLog();
-			xTrxLog.setAction(action);
-			xTrxLog.setObjectClassType(AppConstants.CLASS_TYPE_XA_RESOURCE);
-			xTrxLog.setObjectId(vObj.getId());
-			xTrxLog.setObjectName(vObj.getName());
-			xTrxLog.setParentObjectClassType(AppConstants.CLASS_TYPE_XA_ASSET);
-			xTrxLog.setParentObjectId(vObj.getAssetId());
-			xTrxLog.setParentObjectName(parentObjectName);
-			trxLogList.add(xTrxLog);
-		}
-		
-		return trxLogList;
-	}
-
-	@Override
-	public VXResource readResource(Long id){
-		VXResource vXResource = super.readResource(id);
-		
-		VXResponse vXResponse = xaBizUtil.hasPermission(vXResource,
-				AppConstants.XA_PERM_TYPE_ADMIN);
-		if (vXResponse.getStatusCode() == VXResponse.STATUS_ERROR) {
-			throw restErrorUtil.createRESTException(
-					"You don't have permission to perform this action",
-					MessageEnums.OPER_NO_PERMISSION, id, "Resource",
-					"Trying to read unauthorized resource.");
-		}
-		
-		populateAssetProperties(vXResource);
-		populatePermList(vXResource);
-		populateAuditList(vXResource);
-		return vXResource;
-	}
-	
-	public VXResourceList searchXResourcesWithoutLogin(SearchCriteria searchCriteria) {	
-		VXResourceList returnList = super.searchXResources(searchCriteria);		
-		if(returnList!=null && returnList.getResultSize()>0){
-			for (VXResource vXResource : returnList.getVXResources()) {
-				populateAuditList(vXResource);
-			}
-		}
-		return returnList;
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/security-admin/src/main/java/com/xasecure/service/XResourceServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/service/XResourceServiceBase.java b/security-admin/src/main/java/com/xasecure/service/XResourceServiceBase.java
deleted file mode 100644
index 4007c34..0000000
--- a/security-admin/src/main/java/com/xasecure/service/XResourceServiceBase.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- package com.xasecure.service;
-
-/**
- * 
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.xasecure.common.*;
-import com.xasecure.entity.*;
-import com.xasecure.view.*;
-import com.xasecure.service.*;
-
-public abstract class XResourceServiceBase<T extends XXResource, V extends VXResource>
-		extends AbstractBaseResourceService<T, V> {
-	public static final String NAME = "XResource";
-
-	public XResourceServiceBase() {
-
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	protected XXResource mapViewToEntityBean(VXResource vObj, XXResource mObj, int OPERATION_CONTEXT) {
-		mObj.setName( vObj.getName());
-		mObj.setDescription( vObj.getDescription());
-		mObj.setResourceType( vObj.getResourceType());
-		mObj.setAssetId( vObj.getAssetId());
-		mObj.setParentId( vObj.getParentId());
-		mObj.setParentPath( vObj.getParentPath());
-		mObj.setIsEncrypt( vObj.getIsEncrypt());
-		mObj.setIsRecursive( vObj.getIsRecursive());
-		mObj.setResourceGroup( vObj.getResourceGroup());
-		mObj.setDatabases( vObj.getDatabases());
-		mObj.setTables( vObj.getTables());
-		mObj.setColumnFamilies( vObj.getColumnFamilies());
-		mObj.setColumns( vObj.getColumns());
-		mObj.setUdfs( vObj.getUdfs());
-		mObj.setResourceStatus( vObj.getResourceStatus());
-		mObj.setTableType( vObj.getTableType());
-		mObj.setColumnType( vObj.getColumnType());
-		mObj.setPolicyName( vObj.getPolicyName());
-		mObj.setTopologies( vObj.getTopologies());
-		mObj.setServices( vObj.getServices());
-		return mObj;
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	protected VXResource mapEntityToViewBean(VXResource vObj, XXResource mObj) {
-		vObj.setName( mObj.getName());
-		vObj.setDescription( mObj.getDescription());
-		vObj.setResourceType( mObj.getResourceType());
-		vObj.setAssetId( mObj.getAssetId());
-		vObj.setParentId( mObj.getParentId());
-		vObj.setParentPath( mObj.getParentPath());
-		vObj.setIsEncrypt( mObj.getIsEncrypt());
-		vObj.setIsRecursive( mObj.getIsRecursive());
-		vObj.setResourceGroup( mObj.getResourceGroup());
-		vObj.setDatabases( mObj.getDatabases());
-		vObj.setTables( mObj.getTables());
-		vObj.setColumnFamilies( mObj.getColumnFamilies());
-		vObj.setColumns( mObj.getColumns());
-		vObj.setUdfs( mObj.getUdfs());
-		vObj.setResourceStatus( mObj.getResourceStatus());
-		vObj.setTableType( mObj.getTableType());
-		vObj.setColumnType( mObj.getColumnType());
-		vObj.setPolicyName( mObj.getPolicyName());
-		vObj.setTopologies( mObj.getTopologies());
-		vObj.setServices( mObj.getServices());
-		return vObj;
-	}
-
-	/**
-	 * @param searchCriteria
-	 * @return
-	 */
-	public VXResourceList searchXResources(SearchCriteria searchCriteria) {
-		VXResourceList returnList = new VXResourceList();
-		List<VXResource> xResourceList = new ArrayList<VXResource>();
-
-		@SuppressWarnings("unchecked")
-		List<XXResource> resultList = (List<XXResource>)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);
-			xResourceList.add(vXResource);
-		}
-
-		returnList.setVXResources(xResourceList);
-		return returnList;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/security-admin/src/main/java/com/xasecure/service/XTrxLogService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/service/XTrxLogService.java b/security-admin/src/main/java/com/xasecure/service/XTrxLogService.java
deleted file mode 100644
index 66c445b..0000000
--- a/security-admin/src/main/java/com/xasecure/service/XTrxLogService.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- package com.xasecure.service;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.ParameterExpression;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.criteria.Subquery;
-import javax.persistence.metamodel.EntityType;
-import javax.persistence.metamodel.Metamodel;
-import javax.persistence.metamodel.SingularAttribute;
-
-import com.xasecure.common.SearchCriteria;
-import com.xasecure.common.SearchField;
-import com.xasecure.common.SortField;
-import com.xasecure.common.SortField.SORT_ORDER;
-import com.xasecure.db.XADaoManager;
-import com.xasecure.view.*;
-import com.xasecure.entity.*;
-import com.xasecure.entity.view.VXXTrxLog;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Service;
-
-@Service
-@Scope("singleton")
-public class XTrxLogService extends XTrxLogServiceBase<XXTrxLog, VXTrxLog> {
-	@Autowired
-	XADaoManager xADaoManager;
-	public XTrxLogService(){
-		searchFields.add(new SearchField("attributeName", "obj.attributeName",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("action", "obj.action",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-		searchFields.add(new SearchField("sessionId", "obj.sessionId",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("startDate", "obj.createTime",
-				SearchField.DATA_TYPE.DATE, SearchField.SEARCH_TYPE.GREATER_EQUAL_THAN));	
-		searchFields.add(new SearchField("endDate", "obj.createTime",
-				SearchField.DATA_TYPE.DATE, SearchField.SEARCH_TYPE.LESS_EQUAL_THAN));	
-		searchFields.add(new SearchField("owner", "obj.addedByUserId",
-				SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL));
-		searchFields.add(new SearchField("objectClassType", "obj.objectClassType",
-				SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL));
-		
-		sortFields.add(new SortField("createDate", "obj.createTime", true, SORT_ORDER.DESC));
-		}
-
-	@Override
-	protected void validateForCreate(VXTrxLog vObj) {}
-
-	@Override
-	protected void validateForUpdate(VXTrxLog vObj, XXTrxLog mObj) {}
-
-	@Override
-	public VXTrxLogList searchXTrxLogs(SearchCriteria searchCriteria) {		
-			
-		EntityManager em = daoMgr.getEntityManager();
-		CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
-		Metamodel entityMetaModel = em.getMetamodel();
-		Class<VXXTrxLog> klass = VXXTrxLog.class;
-		EntityType<VXXTrxLog> entityType = entityMetaModel.entity(klass);
-		CriteriaQuery<VXXTrxLog> selectCQ = criteriaBuilder.createQuery(klass);
-		Root<VXXTrxLog> rootEntityType = selectCQ.from(klass);
-		Predicate predicate = criteriaBuilder.conjunction();
-		String fieldName=null;
-		String clientFieldName =null;
-		Object paramValue = null;
-		boolean isListValue = false;
-		SingularAttribute attr =null;
-		Collection<Number> intValueList = null;
-		Date fieldValue =null;
-		Predicate stringPredicate =null;		
-		Predicate intPredicate = null;		
-		Predicate datePredicate =null;
-		Map<String, Object> paramList = searchCriteria.getParamList();	
-		for(String key : paramList.keySet()){
-			for(SearchField searchField : searchFields){				
-				fieldName = searchField.getFieldName();
-				clientFieldName = searchField.getClientFieldName();				
-				paramValue = paramList.get(key);
-				isListValue = false;				
-				if (paramValue != null && paramValue instanceof Collection) {
-					isListValue = true;
-				}				
-				if(fieldName != null){
-					fieldName = fieldName.contains(".") ? fieldName.substring(fieldName.indexOf(".") + 1) : fieldName;
-				}				
-				if(key.equalsIgnoreCase(clientFieldName)){
-					// build where clause depending upon given parameters
-					if(searchField.getDataType() == SearchField.DATA_TYPE.STRING) {
-						// build where clause for String datatypes
-						attr = entityType.getSingularAttribute(fieldName);
-						if(attr != null){
-							stringPredicate = criteriaBuilder.equal(rootEntityType.get(attr), paramValue);
-							if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.PARTIAL)) {
-								String val = "%" + paramValue + "%";
-								stringPredicate = criteriaBuilder.like(rootEntityType.get(attr), val);
-							}
-							predicate = criteriaBuilder.and(predicate, stringPredicate);
-							
-						}	
-					} else if (searchField.getDataType() == SearchField.DATA_TYPE.INT_LIST || 
-							isListValue && searchField.getDataType() == SearchField.DATA_TYPE.INTEGER) {
-						// build where clause for integer lists or integers datatypes
-						intValueList = null;
-						if (paramValue != null && (paramValue instanceof Integer || paramValue instanceof Long)) {
-							intValueList = new ArrayList<Number>();
-							intValueList.add((Number) paramValue);
-						} else {
-							intValueList = (Collection<Number>) paramValue;
-						}
-						for(Number value : intValueList){
-							attr = entityType.getSingularAttribute(fieldName);
-							if(attr != null){
-								intPredicate = criteriaBuilder.equal(rootEntityType.get(attr), value);
-								predicate = criteriaBuilder.and(predicate, intPredicate);
-							}							
-						}
-						
-					} else if (searchField.getDataType() == SearchField.DATA_TYPE.DATE){
-						// build where clause for date datatypes
-						fieldValue = (Date) paramList.get(searchField
-								.getClientFieldName());
-						attr = entityType.getSingularAttribute(fieldName);
-						if (fieldValue != null) {
-							if (searchField.getCustomCondition() == null) {							
-								datePredicate = criteriaBuilder.equal(rootEntityType.get(attr), fieldValue);
-								if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_THAN)) {
-									datePredicate = criteriaBuilder.lessThan(rootEntityType.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_EQUAL_THAN)) {
-									datePredicate = criteriaBuilder.lessThanOrEqualTo(rootEntityType.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_THAN)) {
-									datePredicate = criteriaBuilder.greaterThan(rootEntityType.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_EQUAL_THAN)) {
-									datePredicate = criteriaBuilder.greaterThanOrEqualTo(rootEntityType.get(attr), fieldValue);
-								} else {
-									datePredicate = criteriaBuilder.equal(rootEntityType.get(attr), fieldValue);
-								}
-								predicate = criteriaBuilder.and(predicate, datePredicate);
-							} 
-						}
-						
-					}
-				}
-			}
-		}
-		
-		selectCQ.where(predicate);
-		if(searchCriteria.getSortType()!=null && searchCriteria.getSortType().equalsIgnoreCase("asc")){
-			selectCQ.orderBy(criteriaBuilder.asc(rootEntityType.get("createTime")));
-		}else{
-			selectCQ.orderBy(criteriaBuilder.desc(rootEntityType.get("createTime")));
-		}
-		int startIndex = searchCriteria.getStartIndex();
-		int pageSize = searchCriteria.getMaxRows();
-		List<VXXTrxLog> resultList = em.createQuery(selectCQ).setFirstResult(startIndex).setMaxResults(pageSize).getResultList();
-		VXTrxLogList vxTrxLogList = new VXTrxLogList();		
-		vxTrxLogList.setStartIndex(startIndex);
-		vxTrxLogList.setPageSize(pageSize);		
-		List<VXTrxLog> trxLogList = new ArrayList<VXTrxLog>();
-		XXPortalUser xXPortalUser=null;
-		for(VXXTrxLog xTrxLog : resultList){
-			VXTrxLog trxLog = mapCustomViewToViewObj(xTrxLog);
-			xXPortalUser=null;
-			if(trxLog.getUpdatedBy()!=null){
-				xXPortalUser= xADaoManager.getXXPortalUser().getById(
-						Long.parseLong(trxLog.getUpdatedBy()));
-			}			
-			if(xXPortalUser!=null){
-				trxLog.setOwner(xXPortalUser.getLoginId());
-			}
-			trxLogList.add(trxLog);
-		}			
-		//vxTrxLogList.setTotalCount(count);
-		vxTrxLogList.setVXTrxLogs(trxLogList);
-		return vxTrxLogList;
-	}
-	
-	public Long searchXTrxLogsCount(SearchCriteria searchCriteria) {		
-		
-		EntityManager em = daoMgr.getEntityManager();
-		CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();		
-		Class<VXXTrxLog> klass = VXXTrxLog.class;		
-		CriteriaQuery<VXXTrxLog> criteriaQuery = criteriaBuilder.createQuery(klass);
-		Root<VXXTrxLog> rootEntityType = criteriaQuery.from(klass);
-		Metamodel entityMetaModel = em.getMetamodel();
-		EntityType<VXXTrxLog> entityType = entityMetaModel.entity(klass);
-		CriteriaQuery<VXXTrxLog> selectCQ = criteriaQuery.select(rootEntityType);		
-		Map<String, Object> paramList = searchCriteria.getParamList();
-		CriteriaQuery<Long> countCQ = criteriaBuilder.createQuery(Long.class);
-		Root<VXXTrxLog> countEntityType = countCQ.from(klass);
-		Predicate predicate = criteriaBuilder.conjunction();		
-		String fieldName=null;
-		String clientFieldName =null;
-		Object paramValue = null;
-		boolean isListValue = false;
-		SingularAttribute attr =null;
-		Collection<Number> intValueList = null;
-		Date fieldValue =null;
-		Predicate stringPredicate =null;		
-		Predicate intPredicate = null;		
-		Predicate datePredicate =null;		
-		for(String key : paramList.keySet()){
-			for(SearchField searchField : searchFields){				
-				fieldName = searchField.getFieldName();
-				clientFieldName = searchField.getClientFieldName();				
-				paramValue = paramList.get(key);
-				isListValue = false;				
-				if (paramValue != null && paramValue instanceof Collection) {
-					isListValue = true;
-				}				
-				if(fieldName != null){
-					fieldName = fieldName.contains(".") ? fieldName.substring(fieldName.indexOf(".") + 1) : fieldName;
-				}				
-				if(key.equalsIgnoreCase(clientFieldName)){
-					// build where clause depending upon given parameters
-					if(searchField.getDataType() == SearchField.DATA_TYPE.STRING) {
-						// build where clause for String datatypes
-						attr = entityType.getSingularAttribute(fieldName);
-						if(attr != null){
-							stringPredicate = criteriaBuilder.equal(rootEntityType.get(attr), paramValue);
-							if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.PARTIAL)) {
-								String val = "%" + paramValue + "%";
-								stringPredicate = criteriaBuilder.like(rootEntityType.get(attr), val);
-							}
-							predicate = criteriaBuilder.and(predicate, stringPredicate);
-							
-						}	
-					} else if (searchField.getDataType() == SearchField.DATA_TYPE.INT_LIST || 
-							isListValue && searchField.getDataType() == SearchField.DATA_TYPE.INTEGER) {
-						// build where clause for integer lists or integers datatypes
-						intValueList = null;
-						if (paramValue != null && (paramValue instanceof Integer || paramValue instanceof Long)) {
-							intValueList = new ArrayList<Number>();
-							intValueList.add((Number) paramValue);
-						} else {
-							intValueList = (Collection<Number>) paramValue;
-						}
-						for(Number value : intValueList){
-							attr = entityType.getSingularAttribute(fieldName);
-							if(attr != null){
-								intPredicate = criteriaBuilder.equal(rootEntityType.get(attr), value);
-								predicate = criteriaBuilder.and(predicate, intPredicate);
-							}							
-						}
-						
-					} else if (searchField.getDataType() == SearchField.DATA_TYPE.DATE){
-						// build where clause for date datatypes
-						fieldValue = (Date) paramList.get(searchField
-								.getClientFieldName());
-						attr = entityType.getSingularAttribute(fieldName);
-						if (fieldValue != null) {
-							if (searchField.getCustomCondition() == null) {							
-								datePredicate = criteriaBuilder.equal(rootEntityType.get(attr), fieldValue);
-								if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_THAN)) {
-									datePredicate = criteriaBuilder.lessThan(rootEntityType.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_EQUAL_THAN)) {
-									datePredicate = criteriaBuilder.lessThanOrEqualTo(rootEntityType.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_THAN)) {
-									datePredicate = criteriaBuilder.greaterThan(rootEntityType.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_EQUAL_THAN)) {
-									datePredicate = criteriaBuilder.greaterThanOrEqualTo(rootEntityType.get(attr), fieldValue);
-								} else {
-									datePredicate = criteriaBuilder.equal(rootEntityType.get(attr), fieldValue);
-								}
-								predicate = criteriaBuilder.and(predicate, datePredicate);
-							} 
-						}
-						
-					}
-				}
-			}
-		}		
-		countCQ.select(criteriaBuilder.count(rootEntityType)).where(predicate);		
-		List<Long> countList = em.createQuery(countCQ).getResultList();		
-		Long count = 0L;
-		if(countList != null && countList.size() > 0) {
-			count = countList.get(0);
-			if(count == null) {
-				count = 0L;
-			}
-		}	
-		return count;
-	}
-	
-	@SuppressWarnings({ "rawtypes", "unchecked" })
-	private Predicate buildWhereClause(Predicate predicate, Map<String, Object> paramList, EntityType<XXTrxLog> trxLogEntity, 
-			CriteriaBuilder criteriaBuilder, Root<XXTrxLog> root){
-		
-		for(String key : paramList.keySet()) {
-			for(SearchField searchField : searchFields){
-				
-				String fieldName = searchField.getFieldName();
-				String clientFieldName = searchField.getClientFieldName();
-				
-				Object paramValue = paramList.get(key);
-				boolean isListValue = false;
-				
-				if (paramValue != null && paramValue instanceof Collection) {
-					isListValue = true;
-				}
-				
-				if(fieldName != null){
-					fieldName = fieldName.contains(".") ? fieldName.substring(fieldName.indexOf(".") + 1) : fieldName;
-				}
-				
-				if(key.equalsIgnoreCase(clientFieldName)){
-					// build where clause depending upon given parameters
-					if(searchField.getDataType() == SearchField.DATA_TYPE.STRING) {
-						// build where clause for String datatypes
-						SingularAttribute attr = trxLogEntity.getSingularAttribute(fieldName);
-						if(attr != null){
-							Predicate stringPredicate = criteriaBuilder.equal(root.get(attr), paramValue);
-							predicate = criteriaBuilder.and(predicate, stringPredicate);
-						}	
-					} else if (searchField.getDataType() == SearchField.DATA_TYPE.INT_LIST || 
-							isListValue && searchField.getDataType() == SearchField.DATA_TYPE.INTEGER) {
-						// build where clause for integer lists or integers datatypes
-						Collection<Number> intValueList = null;
-						if (paramValue != null && (paramValue instanceof Integer || paramValue instanceof Long)) {
-							intValueList = new ArrayList<Number>();
-							intValueList.add((Number) paramValue);
-						} else {
-							intValueList = (Collection<Number>) paramValue;
-						}
-						for(Number value : intValueList){
-							SingularAttribute attr = trxLogEntity.getSingularAttribute(fieldName);
-							if(attr != null){
-								Predicate intPredicate = criteriaBuilder.equal(root.get(attr), value);
-								predicate = criteriaBuilder.and(predicate, intPredicate);
-							}							
-						}
-					} else if (searchField.getDataType() == SearchField.DATA_TYPE.DATE){
-						// build where clause for date datatypes
-						Date fieldValue = (Date) paramList.get(searchField
-								.getClientFieldName());
-						SingularAttribute attr = trxLogEntity.getSingularAttribute(fieldName);
-						if (fieldValue != null) {
-							if (searchField.getCustomCondition() == null) {
-								Predicate datePredicate = criteriaBuilder.equal(root.get(attr), fieldValue);
-								if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_THAN)) {
-									datePredicate = criteriaBuilder.lessThan(root.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.LESS_EQUAL_THAN)) {
-									datePredicate = criteriaBuilder.lessThanOrEqualTo(root.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_THAN)) {
-									datePredicate = criteriaBuilder.greaterThan(root.get(attr), fieldValue);
-								} else if (searchField.getSearchType().equals(SearchField.SEARCH_TYPE.GREATER_EQUAL_THAN)) {
-									datePredicate = criteriaBuilder.greaterThanOrEqualTo(root.get(attr), fieldValue);
-								} else {
-									datePredicate = criteriaBuilder.equal(root.get(attr), fieldValue);
-								}
-								predicate = criteriaBuilder.and(predicate, datePredicate);
-							} 
-						}
-					}
-				}
-			}
-		}
-		return predicate;
-	}
-
-	private VXTrxLog mapCustomViewToViewObj(VXXTrxLog vXXTrxLog){
-		VXTrxLog vXTrxLog = new VXTrxLog();
-		vXTrxLog.setId(vXXTrxLog.getId());
-		vXTrxLog.setAction(vXXTrxLog.getAction());
-		vXTrxLog.setAttributeName(vXXTrxLog.getAttributeName());
-		vXTrxLog.setCreateDate(vXXTrxLog.getCreateTime());
-		vXTrxLog.setNewValue(vXXTrxLog.getNewValue());
-		vXTrxLog.setPreviousValue(vXXTrxLog.getPreviousValue());
-		vXTrxLog.setSessionId(vXXTrxLog.getSessionId());
-		if(vXXTrxLog.getUpdatedByUserId()==null || vXXTrxLog.getUpdatedByUserId()==0){
-			vXTrxLog.setUpdatedBy(null);
-		}else{
-			vXTrxLog.setUpdatedBy(String.valueOf(vXXTrxLog.getUpdatedByUserId()));
-		}
-		//We will have to get this from XXUser
-		//vXTrxLog.setOwner(vXXTrxLog.getAddedByUserName());
-		vXTrxLog.setParentObjectClassType(vXXTrxLog.getParentObjectClassType());
-		vXTrxLog.setParentObjectName(vXXTrxLog.getParentObjectName());
-		vXTrxLog.setObjectClassType(vXXTrxLog.getObjectClassType());
-		vXTrxLog.setObjectId(vXXTrxLog.getObjectId());
-		vXTrxLog.setObjectName(vXXTrxLog.getObjectName());
-		vXTrxLog.setTransactionId(vXXTrxLog.getTransactionId());
-		return vXTrxLog;
-	}
-	
-	@Override
-	protected XXTrxLog mapViewToEntityBean(VXTrxLog vObj, XXTrxLog mObj, int OPERATION_CONTEXT) {
-		super.mapViewToEntityBean(vObj, mObj, OPERATION_CONTEXT);
-		if(vObj!=null && mObj!=null){
-			XXPortalUser xXPortalUser=null;
-			if(mObj.getAddedByUserId()==null || mObj.getAddedByUserId()==0){
-				if(!stringUtil.isEmpty(vObj.getOwner())){
-					xXPortalUser=xADaoManager.getXXPortalUser().findByLoginId(vObj.getOwner());	
-					if(xXPortalUser!=null){
-						mObj.setAddedByUserId(xXPortalUser.getId());
-					}
-				}
-			}
-			if(mObj.getUpdatedByUserId()==null || mObj.getUpdatedByUserId()==0){
-				if(!stringUtil.isEmpty(vObj.getUpdatedBy())){
-					xXPortalUser= xADaoManager.getXXPortalUser().findByLoginId(vObj.getUpdatedBy());			
-					if(xXPortalUser!=null){
-						mObj.setUpdatedByUserId(xXPortalUser.getId());
-					}		
-				}
-			}
-		}
-		return mObj;
-	}
-
-	@Override
-	protected VXTrxLog mapEntityToViewBean(VXTrxLog vObj, XXTrxLog mObj) {
-		super.mapEntityToViewBean(vObj, mObj);
-		if(mObj!=null && vObj!=null){
-			XXPortalUser xXPortalUser=null;
-			if(stringUtil.isEmpty(vObj.getOwner())){
-				xXPortalUser= xADaoManager.getXXPortalUser().getById(mObj.getAddedByUserId());	
-				if(xXPortalUser!=null){
-					vObj.setOwner(xXPortalUser.getLoginId());
-				}
-			}
-			if(stringUtil.isEmpty(vObj.getUpdatedBy())){
-				xXPortalUser= xADaoManager.getXXPortalUser().getById(mObj.getUpdatedByUserId());		
-				if(xXPortalUser!=null){
-					vObj.setUpdatedBy(xXPortalUser.getLoginId());
-				}
-			}
-		}
-		return vObj;
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/security-admin/src/main/java/com/xasecure/service/XTrxLogServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/service/XTrxLogServiceBase.java b/security-admin/src/main/java/com/xasecure/service/XTrxLogServiceBase.java
deleted file mode 100644
index 5fdf21f..0000000
--- a/security-admin/src/main/java/com/xasecure/service/XTrxLogServiceBase.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- package com.xasecure.service;
-
-/**
- * 
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.xasecure.common.*;
-import com.xasecure.entity.*;
-import com.xasecure.view.*;
-import com.xasecure.service.*;
-
-public abstract class XTrxLogServiceBase<T extends XXTrxLog, V extends VXTrxLog>
-		extends AbstractBaseResourceService<T, V> {
-	public static final String NAME = "XTrxLog";
-
-	public XTrxLogServiceBase() {
-
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	protected XXTrxLog mapViewToEntityBean(VXTrxLog vObj, XXTrxLog mObj, int OPERATION_CONTEXT) {
-		mObj.setObjectClassType( vObj.getObjectClassType());
-		mObj.setObjectId( vObj.getObjectId());
-		mObj.setParentObjectId( vObj.getParentObjectId());
-		mObj.setParentObjectClassType( vObj.getParentObjectClassType());
-		mObj.setParentObjectName( vObj.getParentObjectName());
-		mObj.setObjectName( vObj.getObjectName());
-		mObj.setAttributeName( vObj.getAttributeName());
-		mObj.setPreviousValue( vObj.getPreviousValue());
-		mObj.setNewValue( vObj.getNewValue());
-		mObj.setTransactionId( vObj.getTransactionId());
-		mObj.setAction( vObj.getAction());
-		mObj.setSessionId( vObj.getSessionId());
-		mObj.setRequestId( vObj.getRequestId());
-		mObj.setSessionType( vObj.getSessionType());
-		return mObj;
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	protected VXTrxLog mapEntityToViewBean(VXTrxLog vObj, XXTrxLog mObj) {
-		vObj.setObjectClassType( mObj.getObjectClassType());
-		vObj.setObjectId( mObj.getObjectId());
-		vObj.setParentObjectId( mObj.getParentObjectId());
-		vObj.setParentObjectClassType( mObj.getParentObjectClassType());
-		vObj.setParentObjectName( mObj.getParentObjectName());
-		vObj.setObjectName( mObj.getObjectName());
-		vObj.setAttributeName( mObj.getAttributeName());
-		vObj.setPreviousValue( mObj.getPreviousValue());
-		vObj.setNewValue( mObj.getNewValue());
-		vObj.setTransactionId( mObj.getTransactionId());
-		vObj.setAction( mObj.getAction());
-		vObj.setSessionId( mObj.getSessionId());
-		vObj.setRequestId( mObj.getRequestId());
-		vObj.setSessionType( mObj.getSessionType());
-		return vObj;
-	}
-
-	/**
-	 * @param searchCriteria
-	 * @return
-	 */
-	public VXTrxLogList searchXTrxLogs(SearchCriteria searchCriteria) {
-		VXTrxLogList returnList = new VXTrxLogList();
-		List<VXTrxLog> xTrxLogList = new ArrayList<VXTrxLog>();
-
-		@SuppressWarnings("unchecked")
-		List<XXTrxLog> resultList = (List<XXTrxLog>)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);
-			xTrxLogList.add(vXTrxLog);
-		}
-
-		returnList.setVXTrxLogs(xTrxLogList);
-		return returnList;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/security-admin/src/main/java/com/xasecure/service/XUserService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/service/XUserService.java b/security-admin/src/main/java/com/xasecure/service/XUserService.java
deleted file mode 100644
index af44969..0000000
--- a/security-admin/src/main/java/com/xasecure/service/XUserService.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- package com.xasecure.service;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import com.xasecure.common.XACommonEnums;
-import com.xasecure.common.MessageEnums;
-import com.xasecure.common.PropertiesUtil;
-import com.xasecure.common.SearchField;
-import com.xasecure.common.SortField;
-import com.xasecure.common.StringUtil;
-import com.xasecure.common.XAConstants;
-import com.xasecure.entity.XXPortalUser;
-import com.xasecure.entity.XXPortalUserRole;
-import com.xasecure.view.VXPortalUser;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Service;
-
-import com.xasecure.biz.XABizUtil;
-import com.xasecure.common.AppConstants;
-import com.xasecure.common.view.VTrxLogAttr;
-import com.xasecure.db.XADaoManager;
-import com.xasecure.entity.*;
-import com.xasecure.util.XAEnumUtil;
-import com.xasecure.view.*;
-
-@Service
-@Scope("singleton")
-public class XUserService extends XUserServiceBase<XXUser, VXUser> {
-
-	public static Long createdByUserId = 1L;
-
-	@Autowired
-	XADaoManager daoManager;
-
-	@Autowired
-	XPermMapService xPermMapService;
-
-	@Autowired
-	StringUtil stringUtil;
-
-	@Autowired
-	XAEnumUtil xaEnumUtil;
-
-	@Autowired
-	XABizUtil xaBizUtil;
-
-	String hiddenPasswordString;
-
-	static HashMap<String, VTrxLogAttr> trxLogAttrs = new HashMap<String, VTrxLogAttr>();
-	static {
-		trxLogAttrs.put("name", new VTrxLogAttr("name", "Login ID", false));
-		trxLogAttrs.put("firstName", new VTrxLogAttr("firstName", "First Name",
-				false));
-		trxLogAttrs.put("lastName", new VTrxLogAttr("lastName", "Last Name",
-				false));
-		trxLogAttrs.put("emailAddress", new VTrxLogAttr("emailAddress",
-				"Email Address", false));
-		trxLogAttrs.put("password", new VTrxLogAttr("password", "Password",
-				false));
-		trxLogAttrs.put("userRoleList", new VTrxLogAttr("userRoleList", "User Role",
-				false));
-		
-	}
-
-	public XUserService() {
-		searchFields.add(new SearchField("name", "obj.name",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL));
-
-		searchFields.add(new SearchField("emailAddress", "xXPortalUser.emailAddress",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.PARTIAL,
-				"XXPortalUser xXPortalUser", "xXPortalUser.loginId = obj.name "));
-
-		searchFields.add(new SearchField("userName", "obj.name",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.FULL));
-
-		searchFields.add(new SearchField("userSource", "xXPortalUser.userSource",
-				SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL,
-				"XXPortalUser xXPortalUser", "xXPortalUser.loginId = obj.name "));
-		
-		searchFields.add(new SearchField("userRoleList", "xXPortalUserRole.userRole",
-				SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.FULL,
-				"XXPortalUser xXPortalUser, XXPortalUserRole xXPortalUserRole", 
-				"xXPortalUser.id=xXPortalUserRole.userId and xXPortalUser.loginId = obj.name "));
-		
-		
-		createdByUserId = new Long(PropertiesUtil.getIntProperty(
-				"xa.xuser.createdByUserId", 1));
-
-		hiddenPasswordString = PropertiesUtil.getProperty("xa.password.hidden",
-				"*****");
-
-		sortFields.add(new SortField("name", "obj.name",true,SortField.SORT_ORDER.ASC));
-		
-	}
-
-	@Override
-	protected void validateForCreate(VXUser vObj) {
-
-		XXUser xUser = daoManager.getXXUser().findByUserName(vObj.getName());
-		if (xUser != null) {
-			throw restErrorUtil.createRESTException("XUser already exists",
-					MessageEnums.ERROR_DUPLICATE_OBJECT);
-		}
-
-	}
-
-	@Override
-	protected void validateForUpdate(VXUser vObj, XXUser mObj) {
-		String vObjName = vObj.getName();
-		String mObjName = mObj.getName();
-		if (vObjName != null && mObjName != null) {
-			if (!vObjName.trim().equals(mObjName.trim())) {
-				validateForCreate(vObj);
-			}
-		}
-	}
-
-	public VXUser getXUserByUserName(String userName) {
-		XXUser xxUser = daoManager.getXXUser().findByUserName(userName);
-		if (xxUser == null) {
-			throw restErrorUtil.createRESTException(userName + " is Not Found",
-					MessageEnums.DATA_NOT_FOUND);
-		}
-		return super.populateViewBean(xxUser);
-
-	}
-
-	public VXUser createXUserWithOutLogin(VXUser vxUser) {
-		XXUser xxUser = daoManager.getXXUser().findByUserName(vxUser.getName());
-		boolean userExists = true;
-		if (xxUser == null) {
-			xxUser = new XXUser();
-			userExists = false;
-		}
-
-		xxUser = mapViewToEntityBean(vxUser, xxUser, 0);
-		XXPortalUser xXPortalUser = daoManager.getXXPortalUser().getById(createdByUserId);
-		if (xXPortalUser != null) {
-			xxUser.setAddedByUserId(createdByUserId);
-			xxUser.setUpdatedByUserId(createdByUserId);
-		}
-
-		if (userExists) {
-			xxUser = getDao().update(xxUser);
-		} else {
-			xxUser = getDao().create(xxUser);
-		}
-		vxUser = postCreate(xxUser);
-		return vxUser;
-	}
-
-	public VXUser readResourceWithOutLogin(Long id) {
-		XXUser resource = getDao().getById(id);
-		if (resource == null) {
-			// Returns code 400 with DATA_NOT_FOUND as the error message
-			throw restErrorUtil.createRESTException(getResourceName()
-					+ " not found", MessageEnums.DATA_NOT_FOUND, id, null,
-					"preRead: " + id + " not found.");
-		}
-
-		VXUser vxUser = populateViewBean(resource);
-		return vxUser;
-	}
-
-	@Override
-	protected VXUser mapEntityToViewBean(VXUser vObj, XXUser mObj) {
-		super.mapEntityToViewBean(vObj, mObj);
-		String userName = vObj.getName();
-		populateUserAttributes(userName, vObj);
-		return vObj;
-	}
-
-	@Override
-	public VXUser populateViewBean(XXUser xUser) {
-		VXUser vObj = super.populateViewBean(xUser);
-		String userName = vObj.getName();
-		populateUserAttributes(userName, vObj);
-		populateGroupList(xUser.getId(), vObj);
-		return vObj;
-	}
-
-	private void populateGroupList(Long xUserId, VXUser vObj) {
-		List<XXGroupUser> xGroupUserList = daoManager.getXXGroupUser()
-				.findByUserId(xUserId);
-		Set<Long> groupIdList = new LinkedHashSet<Long>();
-		Set<String> groupNameList = new LinkedHashSet<String>();
-		if (xGroupUserList != null) {
-			for (XXGroupUser xGroupUser : xGroupUserList) {
-				groupIdList.add(xGroupUser.getParentGroupId());
-				groupNameList.add(xGroupUser.getName());
-			}
-		}
-		List<Long> groups = new ArrayList<Long>(groupIdList);
-		List<String> groupNames = new ArrayList<String>(groupNameList);
-		vObj.setGroupIdList(groups);
-		vObj.setGroupNameList(groupNames);
-	}
-
-	private void populateUserAttributes(String userName, VXUser vObj) {
-		if (userName != null && !userName.isEmpty()) {
-			List<String> userRoleList =new ArrayList<String>();
-			XXPortalUser xXPortalUser = daoManager.getXXPortalUser().findByLoginId(userName);
-			if (xXPortalUser != null) {
-				vObj.setFirstName(xXPortalUser.getFirstName());
-				vObj.setLastName(xXPortalUser.getLastName());
-				vObj.setPassword(PropertiesUtil
-						.getProperty("xa.password.hidden"));
-				String emailAddress = xXPortalUser.getEmailAddress();
-				if (emailAddress != null
-						&& stringUtil.validateEmail(emailAddress)) {
-					vObj.setEmailAddress(xXPortalUser.getEmailAddress());
-				}
-				vObj.setStatus(xXPortalUser.getStatus());
-				vObj.setUserSource(xXPortalUser.getUserSource());
-				List<XXPortalUserRole> gjUserRoleList = daoMgr.getXXPortalUserRole().findByParentId(
-						xXPortalUser.getId());
-				
-				for (XXPortalUserRole gjUserRole : gjUserRoleList) {
-					userRoleList.add(gjUserRole.getUserRole());
-				}
-			}
-			if(userRoleList==null || userRoleList.size()==0){
-				userRoleList.add(XAConstants.ROLE_USER);
-			}			
-			vObj.setUserRoleList(userRoleList);
-		}
-	}
-
-	public List<XXTrxLog> getTransactionLog(VXUser vResource, String action) {
-		return getTransactionLog(vResource, null, action);
-	}
-
-	public List<XXTrxLog> getTransactionLog(VXUser vObj, VXPortalUser mObj,
-			String action) {
-		if (vObj == null
-				&& (action == null || !action.equalsIgnoreCase("update"))) {
-			return null;
-		}
-
-		List<XXTrxLog> trxLogList = new ArrayList<XXTrxLog>();
-		try {
-			Field nameField = vObj.getClass().getDeclaredField("name");
-			nameField.setAccessible(true);
-			String objectName = "" + nameField.get(vObj);
-			Field[] fields = vObj.getClass().getDeclaredFields();
-
-			for (Field field : fields) {
-				field.setAccessible(true);
-				String fieldName = field.getName();
-				if (!trxLogAttrs.containsKey(fieldName)) {
-					continue;
-				}
-
-				VTrxLogAttr vTrxLogAttr = trxLogAttrs.get(fieldName);
-
-				XXTrxLog xTrxLog = new XXTrxLog();
-				xTrxLog.setAttributeName(vTrxLogAttr
-						.getAttribUserFriendlyName());
-
-				String value = null;
-				if (vTrxLogAttr.isEnum()) {
-					String enumName = XXUser.getEnumName(fieldName);
-					int enumValue = field.get(vObj) == null ? 0 : Integer
-							.parseInt("" + field.get(vObj));
-					value = xaEnumUtil.getLabel(enumName, enumValue);
-				} else {
-					value = "" + field.get(vObj);
-					if ((value == null || value.equalsIgnoreCase("null"))
-							&& !action.equalsIgnoreCase("update")) {
-						continue;
-					}
-				}
-
-				if (fieldName.equalsIgnoreCase("password")) {
-					if (value.equalsIgnoreCase(hiddenPasswordString)) {
-						continue;
-					}
-				}
-
-				if (action.equalsIgnoreCase("create")) {
-					if (stringUtil.isEmpty(value)
-							|| (fieldName.equalsIgnoreCase("emailAddress") && !stringUtil
-									.validateEmail(value))) {
-						continue;
-					}
-					xTrxLog.setNewValue(value);
-				} else if (action.equalsIgnoreCase("delete")) {
-					if (fieldName.equalsIgnoreCase("emailAddress")
-							&& !stringUtil.validateEmail(value)) {
-						continue;
-					}
-					xTrxLog.setPreviousValue(value);
-				} else if (action.equalsIgnoreCase("update")) {
-					String oldValue = null;
-					Field[] mFields = mObj.getClass().getDeclaredFields();
-					for (Field mField : mFields) {
-						mField.setAccessible(true);
-						String mFieldName = mField.getName();
-						if (mFieldName.equalsIgnoreCase("loginId")) {
-							mFieldName = "name";
-						}
-						if (fieldName.equalsIgnoreCase(mFieldName)) {
-							oldValue = mField.get(mObj) + "";
-							break;
-						}
-					}
-					if (oldValue.equalsIgnoreCase(value)) {
-						continue;
-					}
-					if (fieldName.equalsIgnoreCase("emailAddress")) {
-						if (stringUtil.validateEmail(oldValue)) {
-							xTrxLog.setPreviousValue(oldValue);
-						}
-						if (stringUtil.validateEmail(value)) {
-							xTrxLog.setNewValue(value);
-						}
-					} else {
-						xTrxLog.setPreviousValue(oldValue);
-						xTrxLog.setNewValue(value);
-					}
-				}
-
-				xTrxLog.setAction(action);
-				xTrxLog.setObjectClassType(AppConstants.CLASS_TYPE_XA_USER);
-				xTrxLog.setObjectId(vObj.getId());
-				xTrxLog.setObjectName(objectName);
-
-				trxLogList.add(xTrxLog);
-			}
-
-			if (trxLogList.size() == 0) {
-				XXTrxLog xTrxLog = new XXTrxLog();
-				xTrxLog.setAction(action);
-				xTrxLog.setObjectClassType(AppConstants.CLASS_TYPE_XA_USER);
-				xTrxLog.setObjectId(vObj.getId());
-				xTrxLog.setObjectName(objectName);
-				trxLogList.add(xTrxLog);
-			}
-
-		} catch (IllegalArgumentException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
-		} catch (NoSuchFieldException e) {
-			e.printStackTrace();
-		} catch (SecurityException e) {
-			e.printStackTrace();
-		}
-
-		return trxLogList;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/security-admin/src/main/java/com/xasecure/service/XUserServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/service/XUserServiceBase.java b/security-admin/src/main/java/com/xasecure/service/XUserServiceBase.java
deleted file mode 100644
index bf30a49..0000000
--- a/security-admin/src/main/java/com/xasecure/service/XUserServiceBase.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- package com.xasecure.service;
-
-/**
- * 
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.xasecure.common.*;
-import com.xasecure.entity.*;
-import com.xasecure.view.*;
-import com.xasecure.service.*;
-
-public abstract class XUserServiceBase<T extends XXUser, V extends VXUser>
-		extends AbstractBaseResourceService<T, V> {
-	public static final String NAME = "XUser";
-
-	public XUserServiceBase() {
-
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	protected XXUser mapViewToEntityBean(VXUser vObj, XXUser mObj, int OPERATION_CONTEXT) {
-		mObj.setName( vObj.getName());
-		mObj.setDescription( vObj.getDescription());
-		mObj.setCredStoreId( vObj.getCredStoreId());
-		return mObj;
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	protected VXUser mapEntityToViewBean(VXUser vObj, XXUser mObj) {
-		vObj.setName( mObj.getName());
-		vObj.setDescription( mObj.getDescription());
-		vObj.setCredStoreId( mObj.getCredStoreId());
-		return vObj;
-	}
-
-	/**
-	 * @param searchCriteria
-	 * @return
-	 */
-	public VXUserList searchXUsers(SearchCriteria searchCriteria) {
-		VXUserList returnList = new VXUserList();
-		List<VXUser> xUserList = new ArrayList<VXUser>();
-
-		@SuppressWarnings("unchecked")
-		List<XXUser> resultList = (List<XXUser>)searchResources(searchCriteria,
-				searchFields, sortFields, returnList);
-
-		// Iterate over the result list and create the return list
-		for (XXUser gjXUser : resultList) {
-			@SuppressWarnings("unchecked")
-			VXUser vXUser = populateViewBean((T)gjXUser);
-			xUserList.add(vXUser);
-		}
-
-		returnList.setVXUsers(xUserList);
-		return returnList;
-	}
-
-}