http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..0c4f99a --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java @@ -0,0 +1,152 @@ +package org.apache.ranger.service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.ranger.db.XXAccessTypeDefDao; +import org.apache.ranger.db.XXPolicyResourceDao; +import org.apache.ranger.entity.XXAccessTypeDef; +import org.apache.ranger.entity.XXPolicy; +import org.apache.ranger.entity.XXPolicyConditionDef; +import org.apache.ranger.entity.XXPolicyItem; +import org.apache.ranger.entity.XXPolicyItemAccess; +import org.apache.ranger.entity.XXPolicyItemCondition; +import org.apache.ranger.entity.XXPolicyResource; +import org.apache.ranger.entity.XXPolicyResourceMap; +import org.apache.ranger.entity.XXResourceDef; +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +@Service +@Scope("singleton") +public class RangerPolicyService extends RangerPolicyServiceBase<XXPolicy, RangerPolicy> { + + @Override + protected void validateForCreate(RangerPolicy vObj) { + // TODO Auto-generated method stub + + } + + @Override + protected void validateForUpdate(RangerPolicy vObj, XXPolicy entityObj) { + // TODO Auto-generated method stub + + } + + @Override + protected RangerPolicy populateViewBean(XXPolicy xPolicy) { + RangerPolicy vPolicy = super.populateViewBean(xPolicy); + + Map<String, RangerPolicyResource> resources = getResourcesForXXPolicy(xPolicy); + vPolicy.setResources(resources); + + List<RangerPolicyItem> policyItems = getPolicyItemListForXXPolicy(xPolicy); + vPolicy.setPolicyItems(policyItems); + + return vPolicy; + } + + public List<RangerPolicyItem> getPolicyItemListForXXPolicy(XXPolicy xPolicy) { + + List<RangerPolicyItem> policyItems = new ArrayList<RangerPolicyItem>(); + List<XXPolicyItem> xPolicyItemList = daoMgr.getXXPolicyItem().findByPolicyId(xPolicy.getId()); + + for(XXPolicyItem xPolItem : xPolicyItemList) { + RangerPolicyItem policyItem = populateXXToRangerPolicyItem(xPolItem); + policyItems.add(policyItem); + } + return policyItems; + } + + public RangerPolicyItem populateXXToRangerPolicyItem(XXPolicyItem xPolItem) { + + RangerPolicyItem rangerPolItem = new RangerPolicyItem(); + + List<XXPolicyItemAccess> xPolItemAccList = daoMgr + .getXXPolicyItemAccess().findByPolicyItemId(xPolItem.getId()); + List<RangerPolicyItemAccess> accesses = new ArrayList<RangerPolicyItemAccess>(); + + XXAccessTypeDefDao xAccDefDao = daoMgr.getXXAccessTypeDef(); + for(XXPolicyItemAccess xPolAccess : xPolItemAccList) { + RangerPolicyItemAccess access = new RangerPolicyItemAccess(); + access.setIsAllowed(xPolAccess.getIsallowed()); + XXAccessTypeDef xAccessType = xAccDefDao.getById(xPolAccess.getType()); + access.setType(xAccessType.getName()); + + accesses.add(access); + } + rangerPolItem.setAccesses(accesses); + + List<RangerPolicyItemCondition> conditions = new ArrayList<RangerPolicyItemCondition>(); + List<XXPolicyConditionDef> xConditionDefList = daoMgr + .getXXPolicyConditionDef() + .findByPolicyItemId(xPolItem.getId()); + for(XXPolicyConditionDef xCondDef : xConditionDefList) { + + List<XXPolicyItemCondition> xPolCondItemList = daoMgr + .getXXPolicyItemCondition().findByPolicyItemAndDefId( + xPolItem.getId(), xCondDef.getId()); + List<String> values = new ArrayList<String>(); + + for(XXPolicyItemCondition polCond : xPolCondItemList) { + values.add(polCond.getValue()); + } + + RangerPolicyItemCondition condition = new RangerPolicyItemCondition(); + condition.setType(xCondDef.getName()); + condition.setValues(values); + + conditions.add(condition); + } + rangerPolItem.setConditions(conditions); + + List<String> userList = daoMgr.getXXUser().findByPolicyItemId(xPolItem.getId()); + List<String> grpList = daoMgr.getXXGroup().findByPolicyItemId(xPolItem.getId()); + + rangerPolItem.setUsers(userList); + rangerPolItem.setGroups(grpList); + + rangerPolItem.setDelegateAdmin(xPolItem.getDelegateAdmin()); + return rangerPolItem; + } + + public Map<String, RangerPolicyResource> getResourcesForXXPolicy(XXPolicy xPolicy) { + List<XXResourceDef> resDefList = daoMgr.getXXResourceDef().findByPolicyId(xPolicy.getId()); + Map<String, RangerPolicyResource> resources = new HashMap<String, RangerPolicyResource>(); + + XXPolicyResourceDao xPolResDao = daoMgr.getXXPolicyResource(); + for(XXResourceDef xResDef : resDefList) { + XXPolicyResource xPolRes = xPolResDao.findByResDefIdAndPolicyId( + xResDef.getId(), xPolicy.getId()); + if(xPolRes == null) { + continue; + } + List<String> values = new ArrayList<>(); + List<XXPolicyResourceMap> xPolResMapList = daoMgr + .getXXPolicyResourceMap() + .findByPolicyResId(xPolRes.getId()); + for(XXPolicyResourceMap xPolResMap : xPolResMapList) { + values.add(xPolResMap.getValue()); + } + RangerPolicyResource resource = new RangerPolicyResource(); + resource.setValues(values); + resource.setIsExcludes(xPolRes.getIsexcludes()); + resource.setIsRecursive(xPolRes.getIsrecursive()); + + resources.put(xResDef.getName(), resource); + } + return resources; + } + + public RangerPolicy getPopulatedViewObject(XXPolicy xPolicy) { + return this.populateViewBean(xPolicy); + } + +}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java new file mode 100644 index 0000000..cf784cc --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java @@ -0,0 +1,49 @@ +package org.apache.ranger.service; + +import org.apache.commons.lang.StringUtils; +import org.apache.ranger.common.GUIDUtil; +import org.apache.ranger.common.MessageEnums; +import org.apache.ranger.entity.XXPolicy; +import org.apache.ranger.entity.XXService; +import org.apache.ranger.plugin.model.RangerPolicy; + +public abstract class RangerPolicyServiceBase<T extends XXPolicy, V extends RangerPolicy> extends RangerBaseModelService<T, V> { + + @Override + @SuppressWarnings("unchecked") + protected XXPolicy mapViewToEntityBean(RangerPolicy vObj, XXPolicy xObj, int OPERATION_CONTEXT) { + String guid = (StringUtils.isEmpty(vObj.getGuid())) ? GUIDUtil.genGUI() : vObj.getGuid(); + + xObj.setGuid(guid); + xObj.setVersion(vObj.getVersion()); + + XXService xService = daoMgr.getXXService().findByName(vObj.getService()); + if(xService == null) { + throw restErrorUtil.createRESTException( + "No corresponding service found for policyName: " + + vObj.getName() + "Service Not Found : " + + vObj.getName(), MessageEnums.INVALID_INPUT_DATA); + } + xObj.setService(xService.getId()); + xObj.setName(vObj.getName()); + xObj.setDescription(vObj.getDescription()); + xObj.setIsAuditEnabled(vObj.getIsAuditEnabled()); + xObj.setIsEnabled(vObj.getIsEnabled()); + + return xObj; + } + + @Override + @SuppressWarnings("unchecked") + protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicy xObj) { + XXService xService = daoMgr.getXXService().getById(xObj.getService()); + vObj.setGuid(xObj.getGuid()); + vObj.setVersion(xObj.getVersion()); + vObj.setService(xService.getName()); + vObj.setName(xObj.getName()); + vObj.setDescription(xObj.getDescription()); + vObj.setIsEnabled(xObj.getIsEnabled()); + vObj.setIsAuditEnabled(xObj.getIsAuditEnabled()); + return vObj; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..4a79505 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java @@ -0,0 +1,111 @@ +package org.apache.ranger.service; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.ranger.entity.XXAccessTypeDef; +import org.apache.ranger.entity.XXEnumDef; +import org.apache.ranger.entity.XXPolicyConditionDef; +import org.apache.ranger.entity.XXResourceDef; +import org.apache.ranger.entity.XXServiceConfigDef; +import org.apache.ranger.entity.XXServiceDef; +import org.apache.ranger.plugin.model.RangerServiceDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef; +import org.apache.ranger.plugin.util.SearchFilter; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +@Service +@Scope("singleton") +public class RangerServiceDefService extends RangerServiceDefServiceBase<XXServiceDef, RangerServiceDef> { + + @Override + protected void validateForCreate(RangerServiceDef vObj) { + // TODO Auto-generated method stub + + } + + @Override + protected void validateForUpdate(RangerServiceDef vObj, + XXServiceDef entityObj) { + // TODO Auto-generated method stub + + } + + @Override + protected RangerServiceDef populateViewBean(XXServiceDef xServiceDef) { + RangerServiceDef serviceDef = super.populateViewBean(xServiceDef); + Long serviceDefId = xServiceDef.getId(); + + List<XXServiceConfigDef> xConfigs = daoMgr.getXXServiceConfigDef().findByServiceDefId(serviceDefId); + if (!stringUtil.isEmpty(xConfigs)) { + List<RangerServiceConfigDef> configs = new ArrayList<RangerServiceConfigDef>(); + for (XXServiceConfigDef xConfig : xConfigs) { + RangerServiceConfigDef config = populateXXToRangerServiceConfigDef(xConfig); + configs.add(config); + } + serviceDef.setConfigs(configs); + } + + List<XXResourceDef> xResources = daoMgr.getXXResourceDef().findByServiceDefId(serviceDefId); + if(!stringUtil.isEmpty(xResources)) { + List<RangerResourceDef> resources = new ArrayList<RangerResourceDef>(); + for(XXResourceDef xResource : xResources) { + RangerResourceDef resource = populateXXToRangerResourceDef(xResource); + resources.add(resource); + } + serviceDef.setResources(resources); + } + + List<XXAccessTypeDef> xAccessTypes = daoMgr.getXXAccessTypeDef().findByServiceDefId(serviceDefId); + if(!stringUtil.isEmpty(xAccessTypes)) { + List<RangerAccessTypeDef> accessTypes = new ArrayList<RangerAccessTypeDef>(); + for(XXAccessTypeDef xAtd : xAccessTypes) { + RangerAccessTypeDef accessType = populateXXToRangerAccessTypeDef(xAtd); + accessTypes.add(accessType); + } + serviceDef.setAccessTypes(accessTypes); + } + + List<XXPolicyConditionDef> xPolicyConditions = daoMgr.getXXPolicyConditionDef().findByServiceDefId(serviceDefId); + if(!stringUtil.isEmpty(xPolicyConditions)) { + List<RangerPolicyConditionDef> policyConditions = new ArrayList<RangerServiceDef.RangerPolicyConditionDef>(); + for(XXPolicyConditionDef xPolicyCondDef : xPolicyConditions) { + RangerPolicyConditionDef policyCondition = populateXXToRangerPolicyConditionDef(xPolicyCondDef); + policyConditions.add(policyCondition); + } + serviceDef.setPolicyConditions(policyConditions); + } + + List<XXEnumDef> xEnumList = daoMgr.getXXEnumDef().findByServiceDefId(serviceDefId); + if(!stringUtil.isEmpty(xEnumList)) { + List<RangerEnumDef> enums = new ArrayList<RangerEnumDef>(); + for(XXEnumDef xEnum : xEnumList) { + RangerEnumDef vEnum = populateXXToRangerEnumDef(xEnum); + enums.add(vEnum); + } + serviceDef.setEnums(enums); + } + return serviceDef; + } + + public List<RangerServiceDef> getServiceDefs(SearchFilter filter) { + List<XXServiceDef> xxServiceDefList = daoMgr.getXXServiceDef().getAll(); + List<RangerServiceDef> serviceDefList = new ArrayList<RangerServiceDef>(); + + for(XXServiceDef xxServiceDef : xxServiceDefList) { + RangerServiceDef serviceDef = populateViewBean(xxServiceDef); + serviceDefList.add(serviceDef); + } + return serviceDefList; + } + + public RangerServiceDef getPopulatedViewObject(XXServiceDef xServiceDef) { + return this.populateViewBean(xServiceDef); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java new file mode 100644 index 0000000..c96370b --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java @@ -0,0 +1,257 @@ +package org.apache.ranger.service; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.ranger.common.AppConstants; +import org.apache.ranger.common.GUIDUtil; +import org.apache.ranger.common.MessageEnums; +import org.apache.ranger.entity.XXAccessTypeDef; +import org.apache.ranger.entity.XXDBBase; +import org.apache.ranger.entity.XXEnumDef; +import org.apache.ranger.entity.XXEnumElementDef; +import org.apache.ranger.entity.XXPolicyConditionDef; +import org.apache.ranger.entity.XXResourceDef; +import org.apache.ranger.entity.XXServiceConfigDef; +import org.apache.ranger.entity.XXServiceDef; +import org.apache.ranger.plugin.model.RangerServiceDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef; +import org.springframework.beans.factory.annotation.Autowired; + +public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V extends RangerServiceDef> + extends RangerBaseModelService<T, V> { + private static final Log LOG = LogFactory.getLog(RangerServiceDefServiceBase.class); + + @Autowired + RangerAuditFields<XXDBBase> rangerAuditFields; + + @SuppressWarnings("unchecked") + @Override + protected XXServiceDef mapViewToEntityBean(RangerServiceDef vObj, XXServiceDef xObj, int operationContext) { + + String guid = (StringUtils.isEmpty(vObj.getGuid())) ? GUIDUtil.genGUI() : vObj.getGuid(); + + xObj.setGuid(guid); + xObj.setVersion(vObj.getVersion()); + xObj.setName(vObj.getName()); + xObj.setImplclassname(vObj.getImplClass()); + xObj.setLabel(vObj.getLabel()); + xObj.setDescription(vObj.getDescription()); + xObj.setRbkeylabel(vObj.getRbKeyLabel()); + xObj.setRbkeydescription(vObj.getRbKeyDescription()); + xObj.setIsEnabled(vObj.getIsEnabled()); + return xObj; + } + + @SuppressWarnings("unchecked") + @Override + protected RangerServiceDef mapEntityToViewBean(RangerServiceDef vObj, XXServiceDef xObj) { + vObj.setGuid(xObj.getGuid()); + vObj.setVersion(xObj.getVersion()); + vObj.setName(xObj.getName()); + vObj.setImplClass(xObj.getImplclassname()); + vObj.setLabel(xObj.getLabel()); + vObj.setDescription(xObj.getDescription()); + vObj.setRbKeyLabel(xObj.getRbkeylabel()); + vObj.setRbKeyDescription(xObj.getRbkeydescription()); + vObj.setIsEnabled(xObj.getIsEnabled()); + return vObj; + } + + public XXServiceConfigDef populateRangerServiceConfigDefToXX(RangerServiceConfigDef vObj, XXServiceConfigDef xObj, XXServiceDef serviceDef) { + if(serviceDef == null) { + LOG.error("RangerServiceDefServiceBase.populateRangerServiceConfigDefToXX, serviceDef can not be null"); + throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); + } + + xObj = (XXServiceConfigDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); + xObj.setDefid(serviceDef.getId()); + xObj.setName(vObj.getName()); + xObj.setType(vObj.getType()); + xObj.setSubtype(vObj.getSubType()); + xObj.setIsMandatory(vObj.getMandatory()); + xObj.setDefaultvalue(vObj.getDefaultValue()); + xObj.setLabel(vObj.getLabel()); + xObj.setDescription(vObj.getDescription()); + xObj.setRbkeylabel(vObj.getRbKeyLabel()); + xObj.setRbkeydescription(vObj.getRbKeyDescription()); + xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); + return xObj; + } + + public RangerServiceConfigDef populateXXToRangerServiceConfigDef(XXServiceConfigDef xObj) { + RangerServiceConfigDef vObj = new RangerServiceConfigDef(); + vObj.setName(xObj.getName()); + vObj.setType(xObj.getType()); + vObj.setSubType(xObj.getSubtype()); + vObj.setMandatory(xObj.getIsMandatory()); + vObj.setDefaultValue(xObj.getDefaultvalue()); + vObj.setLabel(xObj.getLabel()); + vObj.setDescription(xObj.getDescription()); + vObj.setRbKeyLabel(xObj.getRbkeylabel()); + vObj.setRbKeyDescription(xObj.getRbkeydescription()); + return vObj; + } + + public XXResourceDef populateRangerResourceDefToXX(RangerResourceDef vObj, XXResourceDef xObj, XXServiceDef serviceDef) { + if(serviceDef == null) { + LOG.error("RangerServiceDefServiceBase.populateRangerResourceDefToXX, serviceDef can not be null"); + throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); + } + xObj = (XXResourceDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); + xObj.setDefid(serviceDef.getId()); + xObj.setName(vObj.getName()); + xObj.setType(vObj.getType()); + xObj.setLevel(vObj.getLevel()); + xObj.setMandatory(vObj.getMandatory()); + xObj.setLookupsupported(vObj.getLookupSupported()); + xObj.setRecursivesupported(vObj.getRecursiveSupported()); + xObj.setExcludessupported(vObj.getExcludesSupported()); + xObj.setMatcher(vObj.getMatcher()); + xObj.setMatcheroptions(vObj.getMatcherOptions()); + xObj.setLabel(vObj.getLabel()); + xObj.setDescription(vObj.getDescription()); + xObj.setRbkeylabel(vObj.getRbKeyLabel()); + xObj.setRbkeydescription(vObj.getRbKeyDescription()); + xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); + return xObj; + } + + public RangerResourceDef populateXXToRangerResourceDef(XXResourceDef xObj) { + RangerResourceDef vObj = new RangerResourceDef(); + vObj.setName(xObj.getName()); + vObj.setType(xObj.getType()); + vObj.setLevel(xObj.getLevel()); + vObj.setMandatory(xObj.getMandatory()); + vObj.setLookupSupported(xObj.getLookupsupported()); + vObj.setRecursiveSupported(xObj.getRecursivesupported()); + vObj.setExcludesSupported(xObj.getExcludessupported()); + vObj.setMatcher(xObj.getMatcher()); + vObj.setMatcherOptions(xObj.getMatcheroptions()); + vObj.setLabel(xObj.getLabel()); + vObj.setDescription(xObj.getDescription()); + vObj.setRbKeyLabel(xObj.getRbkeylabel()); + vObj.setRbKeyDescription(xObj.getRbkeydescription()); + + XXResourceDef parent = daoMgr.getXXResourceDef().getById(xObj.getParent()); + String parentName = (parent != null) ? parent.getName() : null; + vObj.setParent(parentName); + + return vObj; + } + + public XXAccessTypeDef populateRangerAccessTypeDefToXX(RangerAccessTypeDef vObj, XXAccessTypeDef xObj, XXServiceDef serviceDef) { + if(serviceDef == null) { + LOG.error("RangerServiceDefServiceBase.populateRangerAccessTypeDefToXX, serviceDef can not be null"); + throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); + } + xObj = (XXAccessTypeDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); + xObj.setDefid(serviceDef.getId()); + xObj.setName(vObj.getName()); + xObj.setLabel(vObj.getLabel()); + xObj.setRbkeylabel(vObj.getRbKeyLabel()); + xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); + return xObj; + } + + public RangerAccessTypeDef populateXXToRangerAccessTypeDef(XXAccessTypeDef xObj) { + RangerAccessTypeDef vObj = new RangerAccessTypeDef(); + vObj.setName(xObj.getName()); + vObj.setLabel(xObj.getLabel()); + vObj.setRbKeyLabel(xObj.getRbkeylabel()); + + List<String> impliedGrants = daoMgr.getXXAccessTypeDefGrants().findImpliedGrantsByATDId(xObj.getId()); + vObj.setImpliedGrants(impliedGrants); + return vObj; + } + + public XXPolicyConditionDef populateRangerPolicyConditionDefToXX(RangerPolicyConditionDef vObj, XXPolicyConditionDef xObj, XXServiceDef serviceDef) { + if(serviceDef == null) { + LOG.error("RangerServiceDefServiceBase.populateRangerPolicyConditionDefToXX, serviceDef can not be null"); + throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); + } + xObj = (XXPolicyConditionDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); + xObj.setDefid(serviceDef.getId()); + xObj.setName(vObj.getName()); + xObj.setEvaluator(vObj.getEvaluator()); + xObj.setEvaluatoroptions(vObj.getEvaluatorOptions()); + xObj.setLabel(vObj.getLabel()); + xObj.setDescription(vObj.getDescription()); + xObj.setRbkeylabel(vObj.getRbKeyLabel()); + xObj.setRbkeydescription(vObj.getRbKeyDescription()); + xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); + return xObj; + } + + public RangerPolicyConditionDef populateXXToRangerPolicyConditionDef(XXPolicyConditionDef xObj) { + RangerPolicyConditionDef vObj = new RangerPolicyConditionDef(); + vObj.setName(xObj.getName()); + vObj.setEvaluator(xObj.getEvaluator()); + vObj.setEvaluatorOptions(xObj.getEvaluatoroptions()); + vObj.setLabel(xObj.getLabel()); + vObj.setDescription(xObj.getDescription()); + vObj.setRbKeyLabel(xObj.getRbkeylabel()); + vObj.setRbKeyDescription(xObj.getRbkeydescription()); + return vObj; + } + + public XXEnumDef populateRangerEnumDefToXX(RangerEnumDef vObj, XXEnumDef xObj, XXServiceDef serviceDef) { + if(serviceDef == null) { + LOG.error("RangerServiceDefServiceBase.populateRangerEnumDefToXX, serviceDef can not be null"); + throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); + } + xObj = (XXEnumDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); + xObj.setDefid(serviceDef.getId()); + xObj.setName(vObj.getName()); + xObj.setDefaultindex(vObj.getDefaultIndex()); + return xObj; + } + + public RangerEnumDef populateXXToRangerEnumDef(XXEnumDef xObj) { + RangerEnumDef vObj = new RangerEnumDef(); + vObj.setName(xObj.getName()); + vObj.setDefaultIndex(xObj.getDefaultindex()); + + List<XXEnumElementDef> xElements = daoMgr.getXXEnumElementDef().findByEnumDefId(xObj.getId()); + List<RangerEnumElementDef> elements = new ArrayList<RangerEnumElementDef>(); + + for(XXEnumElementDef xEle : xElements) { + RangerEnumElementDef element = populateXXToRangerEnumElementDef(xEle); + elements.add(element); + } + vObj.setElements(elements); + + return vObj; + } + + public XXEnumElementDef populateRangerEnumElementDefToXX(RangerEnumElementDef vObj, XXEnumElementDef xObj, XXEnumDef enumDef) { + if(enumDef == null) { + LOG.error("RangerServiceDefServiceBase.populateRangerEnumElementDefToXX, enumDef can not be null"); + throw restErrorUtil.createRESTException("enumDef cannot be null.", MessageEnums.DATA_NOT_FOUND); + } + xObj = (XXEnumElementDef) rangerAuditFields.populateAuditFields(xObj, enumDef); + xObj.setEnumdefid(enumDef.getId()); + xObj.setName(vObj.getName()); + xObj.setLabel(vObj.getLabel()); + xObj.setRbkeylabel(vObj.getRbKeyLabel()); + xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); + return xObj; + } + + public RangerEnumElementDef populateXXToRangerEnumElementDef(XXEnumElementDef xObj) { + RangerEnumElementDef vObj = new RangerEnumElementDef(); + vObj.setName(xObj.getName()); + vObj.setLabel(xObj.getLabel()); + vObj.setRbKeyLabel(xObj.getRbkeylabel()); + return vObj; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..c0cf23a --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java @@ -0,0 +1,59 @@ +package org.apache.ranger.service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.apache.ranger.entity.XXService; +import org.apache.ranger.entity.XXServiceConfigMap; +import org.apache.ranger.plugin.model.RangerService; +import org.apache.ranger.plugin.util.SearchFilter; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +@Service +@Scope("singleton") +public class RangerServiceService extends RangerServiceServiceBase<XXService, RangerService> { + + @Override + protected void validateForCreate(RangerService vObj) { + // TODO Auto-generated method stub + + } + + @Override + protected void validateForUpdate(RangerService vService, XXService xService) { + + } + + @Override + protected RangerService populateViewBean(XXService xService) { + RangerService vService = super.populateViewBean(xService); + + HashMap<String, String> configs = new HashMap<String, String>(); + List<XXServiceConfigMap> svcConfigMapList = daoMgr.getXXServiceConfigMap() + .findByServiceId(xService.getId()); + for(XXServiceConfigMap svcConfMap : svcConfigMapList) { + configs.put(svcConfMap.getConfigkey(), svcConfMap.getConfigvalue()); + } + vService.setConfigs(configs); + + return vService; + } + + public RangerService getPopulatedViewObject(XXService xService) { + return this.populateViewBean(xService); + } + + public List<RangerService> getServices(SearchFilter filter) { + List<XXService> xxServiceList = daoMgr.getXXService().getAll(); + List<RangerService> serviceList = new ArrayList<RangerService>(); + + for(XXService xxService : xxServiceList) { + RangerService service = populateViewBean(xxService); + serviceList.add(service); + } + return serviceList; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..32823aa --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java @@ -0,0 +1,49 @@ +package org.apache.ranger.service; + +import org.apache.commons.lang.StringUtils; +import org.apache.ranger.common.GUIDUtil; +import org.apache.ranger.common.MessageEnums; +import org.apache.ranger.entity.XXService; +import org.apache.ranger.entity.XXServiceDef; +import org.apache.ranger.plugin.model.RangerService; + +public abstract class RangerServiceServiceBase<T extends XXService, V extends RangerService> extends RangerBaseModelService<T, V> { + + @Override + @SuppressWarnings("unchecked") + protected XXService mapViewToEntityBean(RangerService vObj, XXService xObj, int OPERATION_CONTEXT) { + String guid = (StringUtils.isEmpty(vObj.getGuid())) ? GUIDUtil.genGUI() : vObj.getGuid(); + + xObj.setGuid(guid); + xObj.setVersion(vObj.getVersion()); + + XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByName(vObj.getType()); + if(xServiceDef == null) { + throw restErrorUtil.createRESTException( + "No ServiceDefinition found with name :" + vObj.getType(), + MessageEnums.INVALID_INPUT_DATA); + } + xObj.setType(xServiceDef.getId()); + xObj.setName(vObj.getName()); + xObj.setPolicyVersion(vObj.getPolicyVersion()); + xObj.setPolicyUpdateTime(vObj.getPolicyUpdateTime()); + xObj.setDescription(vObj.getDescription()); + xObj.setIsEnabled(vObj.getIsEnabled()); + return xObj; + } + + @Override + @SuppressWarnings("unchecked") + protected RangerService mapEntityToViewBean(RangerService vObj, XXService xObj) { + XXServiceDef xServiceDef = daoMgr.getXXServiceDef().getById(xObj.getType()); + vObj.setType(xServiceDef.getName()); + vObj.setGuid(xObj.getGuid()); + vObj.setVersion(xObj.getVersion()); + vObj.setName(xObj.getName()); + vObj.setDescription(xObj.getDescription()); + vObj.setPolicyVersion(xObj.getPolicyVersion()); + vObj.setPolicyUpdateTime(xObj.getPolicyUpdateTime()); + return vObj; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/test/java/org/apache/ranger/plugin/store/RangerDBStore.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/plugin/store/RangerDBStore.java b/security-admin/src/test/java/org/apache/ranger/plugin/store/RangerDBStore.java new file mode 100644 index 0000000..295ab5c --- /dev/null +++ b/security-admin/src/test/java/org/apache/ranger/plugin/store/RangerDBStore.java @@ -0,0 +1,9 @@ +package org.apache.ranger.plugin.store; + +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class RangerDBStore { + +}
