You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ve...@apache.org on 2015/04/13 15:56:02 UTC
incubator-ranger git commit: RANGER-392 : Implement update/delete of
ServiceDef Object
Repository: incubator-ranger
Updated Branches:
refs/heads/master fabc9e205 -> c1de019f4
RANGER-392 : Implement update/delete of ServiceDef Object
Signed-off-by: Velmurugan Periasamy <ve...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/c1de019f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/c1de019f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/c1de019f
Branch: refs/heads/master
Commit: c1de019f45437c632ee4aaf97b9d43cd822a4183
Parents: fabc9e2
Author: Gautam Borad <gb...@gmail.com>
Authored: Mon Apr 13 14:52:10 2015 +0530
Committer: Velmurugan Periasamy <ve...@apache.org>
Committed: Mon Apr 13 09:55:34 2015 -0400
----------------------------------------------------------------------
.../org/apache/ranger/biz/ServiceDBStore.java | 520 ++++++++++++++++++-
.../ranger/db/XXAccessTypeDefGrantsDao.java | 24 +
.../java/org/apache/ranger/db/XXPolicyDao.java | 12 +
.../apache/ranger/db/XXPolicyItemAccessDao.java | 12 +
.../ranger/db/XXPolicyItemConditionDao.java | 12 +
.../apache/ranger/db/XXPolicyResourceDao.java | 12 +
.../org/apache/ranger/db/XXResourceDefDao.java | 12 +
.../java/org/apache/ranger/db/XXServiceDao.java | 15 +
.../ranger/entity/XXAccessTypeDefGrants.java | 8 +-
.../org/apache/ranger/rest/PublicAPIsv2.java | 8 +-
.../org/apache/ranger/rest/ServiceREST.java | 11 +-
.../resources/META-INF/jpa_named_queries.xml | 37 +-
.../org/apache/ranger/rest/TestServiceREST.java | 9 +-
.../rest/TestServiceRESTForValidation.java | 11 +-
14 files changed, 674 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 7da3d8b..239723a 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -57,6 +57,7 @@ import org.apache.ranger.db.XXPolicyResourceMapDao;
import org.apache.ranger.db.XXResourceDefDao;
import org.apache.ranger.db.XXServiceConfigDefDao;
import org.apache.ranger.db.XXServiceConfigMapDao;
+import org.apache.ranger.db.XXServiceDao;
import org.apache.ranger.entity.XXAccessTypeDef;
import org.apache.ranger.entity.XXAccessTypeDefGrants;
import org.apache.ranger.entity.XXContextEnricherDef;
@@ -287,8 +288,8 @@ public class ServiceDBStore extends AbstractServiceStore {
XXAccessTypeDefGrantsDao xxATDGrantDao = daoMgr.getXXAccessTypeDefGrants();
for(String impliedGrant : impliedGrants) {
XXAccessTypeDefGrants xImpliedGrant = new XXAccessTypeDefGrants();
- xImpliedGrant.setAtdid(xAccessType.getId());
- xImpliedGrant.setImpliedgrant(impliedGrant);
+ xImpliedGrant.setAtdId(xAccessType.getId());
+ xImpliedGrant.setImpliedGrant(impliedGrant);
xImpliedGrant = xxATDGrantDao.create(xImpliedGrant);
}
}
@@ -345,34 +346,529 @@ public class ServiceDBStore extends AbstractServiceStore {
}
@Override
- public RangerServiceDef updateServiceDef(RangerServiceDef serviceDef)
- throws Exception {
+ public RangerServiceDef updateServiceDef(RangerServiceDef serviceDef) throws Exception {
if (LOG.isDebugEnabled()) {
LOG.debug("==> ServiceDefDBStore.updateServiceDef(" + serviceDef + ")");
}
- RangerServiceDef ret = null;
+ Long serviceDefId = serviceDef.getId();
+
+ XXServiceDef existing = daoMgr.getXXServiceDef().getById(serviceDefId);
+ if (existing == null) {
+ throw restErrorUtil.createRESTException("no service-def exists with ID=" + serviceDef.getId(),
+ MessageEnums.DATA_NOT_FOUND);
+ }
+
+ String existingName = existing.getName();
+
+ boolean renamed = !StringUtils.equalsIgnoreCase(serviceDef.getName(), existingName);
+
+ if (renamed) {
+ XXServiceDef renamedSVCDef = daoMgr.getXXServiceDef().findByName(serviceDef.getName());
+
+ if (renamedSVCDef != null) {
+ throw restErrorUtil.createRESTException(
+ "another service-def already exists with name '" + serviceDef.getName() + "'. ID="
+ + renamedSVCDef.getId(), MessageEnums.DATA_NOT_UPDATABLE);
+ }
+ }
+
+ List<RangerServiceConfigDef> configs = serviceDef.getConfigs() != null ? serviceDef.getConfigs() : new ArrayList<RangerServiceConfigDef>();
+ List<RangerResourceDef> resources = serviceDef.getResources() != null ? serviceDef.getResources() : new ArrayList<RangerResourceDef>();
+ List<RangerAccessTypeDef> accessTypes = serviceDef.getAccessTypes() != null ? serviceDef.getAccessTypes() : new ArrayList<RangerAccessTypeDef>();
+ List<RangerPolicyConditionDef> policyConditions = serviceDef.getPolicyConditions() != null ? serviceDef.getPolicyConditions() : new ArrayList<RangerPolicyConditionDef>();
+ List<RangerContextEnricherDef> contextEnrichers = serviceDef.getContextEnrichers() != null ? serviceDef.getContextEnrichers() : new ArrayList<RangerContextEnricherDef>();
+ List<RangerEnumDef> enums = serviceDef.getEnums() != null ? serviceDef.getEnums() : new ArrayList<RangerEnumDef>();
+
+ Long version = serviceDef.getVersion();
+ if (version == null) {
+ version = new Long(1);
+ LOG.info("Found Version Value: `null`, so setting value of version to 1. While updating object version should not be null.");
+ } else {
+ version = new Long(version.longValue() + 1);
+ }
+ serviceDef.setVersion(version);
+ serviceDef = serviceDefService.update(serviceDef);
+ XXServiceDef createdSvcDef = daoMgr.getXXServiceDef().getById(serviceDefId);
+
+ updateChildObjectsOfServiceDef(createdSvcDef, configs, resources, accessTypes, policyConditions, contextEnrichers, enums);
- // TODO: updateServiceDef()
+ RangerServiceDef updatedSvcDef = getServiceDef(serviceDefId);
+ dataHistService.createObjectDataHistory(updatedSvcDef, RangerDataHistService.ACTION_UPDATE);
if (LOG.isDebugEnabled()) {
- LOG.debug("<== ServiceDefDBStore.updateServiceDef(" + serviceDef + "): " + ret);
+ LOG.debug("<== ServiceDefDBStore.updateServiceDef(" + serviceDef + "): " + serviceDef);
}
- return ret;
+ return updatedSvcDef;
}
+ public void updateChildObjectsOfServiceDef(XXServiceDef createdSvcDef, List<RangerServiceConfigDef> configs,
+ List<RangerResourceDef> resources, List<RangerAccessTypeDef> accessTypes,
+ List<RangerPolicyConditionDef> policyConditions, List<RangerContextEnricherDef> contextEnrichers,
+ List<RangerEnumDef> enums) {
+
+ Long serviceDefId = createdSvcDef.getId();
+
+ List<XXServiceConfigDef> xxConfigs = daoMgr.getXXServiceConfigDef().findByServiceDefId(serviceDefId);
+ List<XXResourceDef> xxResources = daoMgr.getXXResourceDef().findByServiceDefId(serviceDefId);
+ List<XXAccessTypeDef> xxAccessTypes = daoMgr.getXXAccessTypeDef().findByServiceDefId(serviceDefId);
+ List<XXPolicyConditionDef> xxPolicyConditions = daoMgr.getXXPolicyConditionDef().findByServiceDefId(
+ serviceDefId);
+ List<XXContextEnricherDef> xxContextEnrichers = daoMgr.getXXContextEnricherDef().findByServiceDefId(
+ serviceDefId);
+ List<XXEnumDef> xxEnums = daoMgr.getXXEnumDef().findByServiceDefId(serviceDefId);
+
+ XXServiceConfigDefDao xxServiceConfigDao = daoMgr.getXXServiceConfigDef();
+ for (RangerServiceConfigDef config : configs) {
+ boolean found = false;
+ for (XXServiceConfigDef xConfig : xxConfigs) {
+ if (config.getId() != null && config.getId().equals(xConfig.getId())) {
+ found = true;
+ xConfig = serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, createdSvcDef,
+ RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ xConfig = xxServiceConfigDao.update(xConfig);
+ config = serviceDefService.populateXXToRangerServiceConfigDef(xConfig);
+ break;
+ }
+ }
+ if (!found) {
+ XXServiceConfigDef xConfig = new XXServiceConfigDef();
+ xConfig = serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, createdSvcDef,
+ RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+ xConfig = xxServiceConfigDao.create(xConfig);
+ config = serviceDefService.populateXXToRangerServiceConfigDef(xConfig);
+ }
+ }
+ for (XXServiceConfigDef xConfig : xxConfigs) {
+ boolean found = false;
+ for (RangerServiceConfigDef config : configs) {
+ if (xConfig.getId() != null && xConfig.getId().equals(config.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ xxServiceConfigDao.remove(xConfig);
+ }
+ }
+
+ XXResourceDefDao xxResDefDao = daoMgr.getXXResourceDef();
+ for (RangerResourceDef resource : resources) {
+ boolean found = false;
+ for (XXResourceDef xRes : xxResources) {
+ if (resource.getId() != null && resource.getId().equals(xRes.getId())) {
+ found = true;
+ xRes = serviceDefService.populateRangerResourceDefToXX(resource, xRes, createdSvcDef,
+ RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ xxResDefDao.update(xRes);
+ resource = serviceDefService.populateXXToRangerResourceDef(xRes);
+ break;
+ }
+ }
+ if (!found) {
+ XXResourceDef parent = xxResDefDao.findByNameAndServiceDefId(resource.getParent(), serviceDefId);
+ Long parentId = (parent != null) ? parent.getId() : null;
+
+ XXResourceDef xResource = new XXResourceDef();
+ xResource = serviceDefService.populateRangerResourceDefToXX(resource, xResource, createdSvcDef,
+ RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+ xResource.setParent(parentId);
+ xResource = xxResDefDao.create(xResource);
+ }
+ }
+ for (XXResourceDef xRes : xxResources) {
+ boolean found = false;
+ for (RangerResourceDef resource : resources) {
+ if (xRes.getId() != null && xRes.getId().equals(resource.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ List<XXPolicyResource> policyResList = daoMgr.getXXPolicyResource().findByResDefId(xRes.getId());
+ if (!stringUtil.isEmpty(policyResList)) {
+ throw restErrorUtil.createRESTException("Policy/Policies are referring to this resource: "
+ + xRes.getName() + ". Please remove such references from policy before updating service-def.",
+ MessageEnums.DATA_NOT_UPDATABLE);
+ }
+ deleteXXResourceDef(xRes);
+ }
+ }
+
+ XXAccessTypeDefDao xxATDDao = daoMgr.getXXAccessTypeDef();
+ for (RangerAccessTypeDef access : accessTypes) {
+ boolean found = false;
+ for (XXAccessTypeDef xAccess : xxAccessTypes) {
+ if (access.getId() != null && access.getId().equals(xAccess.getId())) {
+ found = true;
+ xAccess = serviceDefService.populateRangerAccessTypeDefToXX(access, xAccess, createdSvcDef,
+ RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ xAccess = xxATDDao.update(xAccess);
+
+ Collection<String> impliedGrants = access.getImpliedGrants();
+ XXAccessTypeDefGrantsDao xxATDGrantDao = daoMgr.getXXAccessTypeDefGrants();
+ List<String> xxImpliedGrants = xxATDGrantDao.findImpliedGrantsByATDId(xAccess.getId());
+ for (String impliedGrant : impliedGrants) {
+ boolean foundGrant = false;
+ for (String xImpliedGrant : xxImpliedGrants) {
+ if (StringUtils.equalsIgnoreCase(impliedGrant, xImpliedGrant)) {
+ foundGrant = true;
+ break;
+ }
+ }
+ if (!foundGrant) {
+ XXAccessTypeDefGrants xImpliedGrant = new XXAccessTypeDefGrants();
+ xImpliedGrant.setAtdId(xAccess.getId());
+ xImpliedGrant.setImpliedGrant(impliedGrant);
+ xImpliedGrant = xxATDGrantDao.create(xImpliedGrant);
+ }
+ }
+ for (String xImpliedGrant : xxImpliedGrants) {
+ boolean foundGrant = false;
+ for (String impliedGrant : impliedGrants) {
+ if (StringUtils.equalsIgnoreCase(xImpliedGrant, impliedGrant)) {
+ foundGrant = true;
+ break;
+ }
+ }
+ if (!foundGrant) {
+ XXAccessTypeDefGrants xATDGrant = xxATDGrantDao.findByNameAndATDId(xAccess.getId(),
+ xImpliedGrant);
+ xxATDGrantDao.remove(xATDGrant);
+
+ }
+ }
+ access = serviceDefService.populateXXToRangerAccessTypeDef(xAccess);
+ break;
+ }
+ }
+ if (!found) {
+ XXAccessTypeDef xAccessType = new XXAccessTypeDef();
+ xAccessType = serviceDefService.populateRangerAccessTypeDefToXX(access, xAccessType, createdSvcDef,
+ RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+ xAccessType = xxATDDao.create(xAccessType);
+
+ Collection<String> impliedGrants = access.getImpliedGrants();
+ XXAccessTypeDefGrantsDao xxATDGrantDao = daoMgr.getXXAccessTypeDefGrants();
+ for (String impliedGrant : impliedGrants) {
+ XXAccessTypeDefGrants xImpliedGrant = new XXAccessTypeDefGrants();
+ xImpliedGrant.setAtdId(xAccessType.getId());
+ xImpliedGrant.setImpliedGrant(impliedGrant);
+ xImpliedGrant = xxATDGrantDao.create(xImpliedGrant);
+ }
+ access = serviceDefService.populateXXToRangerAccessTypeDef(xAccessType);
+ }
+ }
+
+ for (XXAccessTypeDef xAccess : xxAccessTypes) {
+ boolean found = false;
+ for (RangerAccessTypeDef access : accessTypes) {
+ if (xAccess.getId() != null && xAccess.getId().equals(access.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ List<XXPolicyItemAccess> polItemAccessList = daoMgr.getXXPolicyItemAccess().findByType(xAccess.getId());
+ if(!stringUtil.isEmpty(polItemAccessList)) {
+ throw restErrorUtil.createRESTException("Policy/Policies are referring to this access-type: "
+ + xAccess.getName() + ". Please remove such references from policy before updating service-def.",
+ MessageEnums.DATA_NOT_UPDATABLE);
+ }
+ deleteXXAccessTypeDef(xAccess);
+ }
+ }
+
+ XXPolicyConditionDefDao xxPolCondDao = daoMgr.getXXPolicyConditionDef();
+ for (RangerPolicyConditionDef condition : policyConditions) {
+ boolean found = false;
+ for (XXPolicyConditionDef xCondition : xxPolicyConditions) {
+ if (condition.getId() != null && condition.getId().equals(xCondition.getId())) {
+ found = true;
+ xCondition = serviceDefService.populateRangerPolicyConditionDefToXX(condition, xCondition,
+ createdSvcDef, RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ xCondition = xxPolCondDao.update(xCondition);
+ condition = serviceDefService.populateXXToRangerPolicyConditionDef(xCondition);
+ break;
+ }
+ }
+ if (!found) {
+ XXPolicyConditionDef xCondition = new XXPolicyConditionDef();
+ xCondition = serviceDefService.populateRangerPolicyConditionDefToXX(condition, xCondition,
+ createdSvcDef, RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+ xCondition = xxPolCondDao.create(xCondition);
+ condition = serviceDefService.populateXXToRangerPolicyConditionDef(xCondition);
+ }
+ }
+ for(XXPolicyConditionDef xCondition : xxPolicyConditions) {
+ boolean found = false;
+ for(RangerPolicyConditionDef condition : policyConditions) {
+ if(xCondition.getId() != null && xCondition.getId().equals(condition.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if(!found) {
+ List<XXPolicyItemCondition> policyItemCondList = daoMgr.getXXPolicyItemCondition()
+ .findByPolicyConditionDefId(xCondition.getId());
+ if(!stringUtil.isEmpty(policyItemCondList)) {
+ throw restErrorUtil.createRESTException("Policy/Policies are referring to this policy-condition: "
+ + xCondition.getName() + ". Please remove such references from policy before updating service-def.",
+ MessageEnums.DATA_NOT_UPDATABLE);
+ }
+ for(XXPolicyItemCondition policyItemCond : policyItemCondList) {
+ daoMgr.getXXPolicyItemCondition().remove(policyItemCond);
+ }
+ xxPolCondDao.remove(xCondition);
+ }
+ }
+
+ XXContextEnricherDefDao xxContextEnricherDao = daoMgr.getXXContextEnricherDef();
+ for (RangerContextEnricherDef context : contextEnrichers) {
+ boolean found = false;
+ for (XXContextEnricherDef xContext : xxContextEnrichers) {
+ if (context.getId() != null && context.getId().equals(xContext.getId())) {
+ found = true;
+ xContext = serviceDefService.populateRangerContextEnricherDefToXX(context, xContext, createdSvcDef,
+ RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ xContext = xxContextEnricherDao.update(xContext);
+ context = serviceDefService.populateXXToRangerContextEnricherDef(xContext);
+ break;
+ }
+ }
+ if (!found) {
+ XXContextEnricherDef xContext = new XXContextEnricherDef();
+ xContext = serviceDefService.populateRangerContextEnricherDefToXX(context, xContext, createdSvcDef,
+ RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ context = serviceDefService.populateXXToRangerContextEnricherDef(xContext);
+ }
+ }
+ for (XXContextEnricherDef xContext : xxContextEnrichers) {
+ boolean found = false;
+ for (RangerContextEnricherDef context : contextEnrichers) {
+ if (xContext.getId() != null && xContext.getId().equals(context.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ daoMgr.getXXContextEnricherDef().remove(xContext);
+ }
+ }
+
+ XXEnumDefDao xxEnumDefDao = daoMgr.getXXEnumDef();
+ for (RangerEnumDef enumDef : enums) {
+ boolean found = false;
+ for (XXEnumDef xEnumDef : xxEnums) {
+ if (enumDef.getId() != null && enumDef.getId().equals(xEnumDef.getId())) {
+ found = true;
+ xEnumDef = serviceDefService.populateRangerEnumDefToXX(enumDef, xEnumDef, createdSvcDef,
+ RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ xEnumDef = xxEnumDefDao.update(xEnumDef);
+
+ XXEnumElementDefDao xEnumEleDao = daoMgr.getXXEnumElementDef();
+ List<XXEnumElementDef> xxEnumEleDefs = xEnumEleDao.findByEnumDefId(xEnumDef.getId());
+ List<RangerEnumElementDef> enumEleDefs = enumDef.getElements();
+
+ for (RangerEnumElementDef eleDef : enumEleDefs) {
+ boolean foundEle = false;
+ for (XXEnumElementDef xEleDef : xxEnumEleDefs) {
+ if (eleDef.getId() != null && eleDef.getId().equals(xEleDef.getId())) {
+ foundEle = true;
+ xEleDef = serviceDefService.populateRangerEnumElementDefToXX(eleDef, xEleDef, xEnumDef,
+ RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+ xEleDef = xEnumEleDao.update(xEleDef);
+ break;
+ }
+ }
+ if (!foundEle) {
+ XXEnumElementDef xElement = new XXEnumElementDef();
+ xElement = serviceDefService.populateRangerEnumElementDefToXX(eleDef, xElement, xEnumDef,
+ RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+ xElement = xEnumEleDao.create(xElement);
+ }
+ }
+ for (XXEnumElementDef xxEleDef : xxEnumEleDefs) {
+ boolean foundEle = false;
+ for (RangerEnumElementDef enumEle : enumEleDefs) {
+ if (xxEleDef.getId() != null && xxEleDef.getId().equals(enumEle.getId())) {
+ foundEle = true;
+ break;
+ }
+ }
+ if (!foundEle) {
+ xEnumEleDao.remove(xxEleDef);
+ }
+ }
+ enumDef = serviceDefService.populateXXToRangerEnumDef(xEnumDef);
+ break;
+ }
+ }
+ if (!found) {
+ XXEnumDef xEnum = new XXEnumDef();
+ xEnum = serviceDefService.populateRangerEnumDefToXX(enumDef, xEnum, createdSvcDef,
+ RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+ xEnum = xxEnumDefDao.create(xEnum);
+
+ List<RangerEnumElementDef> elements = enumDef.getElements();
+ XXEnumElementDefDao xxEnumEleDefDao = daoMgr.getXXEnumElementDef();
+ for (RangerEnumElementDef element : elements) {
+ XXEnumElementDef xElement = new XXEnumElementDef();
+ xElement = serviceDefService.populateRangerEnumElementDefToXX(element, xElement, xEnum,
+ RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+ xElement = xxEnumEleDefDao.create(xElement);
+ }
+ enumDef = serviceDefService.populateXXToRangerEnumDef(xEnum);
+ }
+ }
+ for (XXEnumDef xEnumDef : xxEnums) {
+ boolean found = false;
+ for (RangerEnumDef enumDef : enums) {
+ if (xEnumDef.getId() != null && xEnumDef.getId().equals(enumDef.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ List<XXEnumElementDef> enumEleDefList = daoMgr.getXXEnumElementDef().findByEnumDefId(xEnumDef.getId());
+ for (XXEnumElementDef eleDef : enumEleDefList) {
+ daoMgr.getXXEnumElementDef().remove(eleDef);
+ }
+ xxEnumDefDao.remove(xEnumDef);
+ }
+ }
+ }
+
@Override
- public void deleteServiceDef(Long servceId) throws Exception {
+ public void deleteServiceDef(Long serviceDefId) throws Exception {
+ deleteServiceDef(serviceDefId, false);
+ }
+
+ public void deleteServiceDef(Long serviceDefId, boolean forceDelete) throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> ServiceDefDBStore.deleteServiceDef(" + servceId + ")");
+ LOG.debug("==> ServiceDefDBStore.deleteServiceDef(" + serviceDefId + ")");
}
- // TODO: deleteServiceDef()
+ RangerServiceDef serviceDef = getServiceDef(serviceDefId);
+ if(serviceDef == null) {
+ throw restErrorUtil.createRESTException("No Service Definiton found for Id: " + serviceDefId,
+ MessageEnums.DATA_NOT_FOUND);
+ }
+
+ if (!forceDelete) {
+ List<XXService> svcDefServiceList = daoMgr.getXXService().findByServiceDefId(serviceDefId);
+ if (!stringUtil.isEmpty(svcDefServiceList)) {
+ throw restErrorUtil.createRESTException(
+ "Services exists under given service definition, can't delete Service-Def: "
+ + serviceDef.getName(), MessageEnums.OPER_NOT_ALLOWED_FOR_ENTITY);
+ }
+ }
+
+ List<XXAccessTypeDef> accTypeDefs = daoMgr.getXXAccessTypeDef().findByServiceDefId(serviceDefId);
+ for(XXAccessTypeDef accessType : accTypeDefs) {
+ deleteXXAccessTypeDef(accessType);
+ }
+
+ XXContextEnricherDefDao xContextEnricherDao = daoMgr.getXXContextEnricherDef();
+ List<XXContextEnricherDef> contextEnrichers = xContextEnricherDao.findByServiceDefId(serviceDefId);
+ for(XXContextEnricherDef context : contextEnrichers) {
+ xContextEnricherDao.remove(context);
+ }
+
+ XXEnumDefDao enumDefDao = daoMgr.getXXEnumDef();
+ List<XXEnumDef> enumDefList = enumDefDao.findByServiceDefId(serviceDefId);
+ for (XXEnumDef enumDef : enumDefList) {
+ List<XXEnumElementDef> enumEleDefList = daoMgr.getXXEnumElementDef().findByEnumDefId(enumDef.getId());
+ for (XXEnumElementDef eleDef : enumEleDefList) {
+ daoMgr.getXXEnumElementDef().remove(eleDef);
+ }
+ enumDefDao.remove(enumDef);
+ }
+
+ XXPolicyConditionDefDao policyCondDao = daoMgr.getXXPolicyConditionDef();
+ List<XXPolicyConditionDef> policyCondList = policyCondDao.findByServiceDefId(serviceDefId);
+
+ for (XXPolicyConditionDef policyCond : policyCondList) {
+ List<XXPolicyItemCondition> policyItemCondList = daoMgr.getXXPolicyItemCondition().findByPolicyConditionDefId(policyCond.getId());
+ for (XXPolicyItemCondition policyItemCond : policyItemCondList) {
+ daoMgr.getXXPolicyItemCondition().remove(policyItemCond);
+ }
+ policyCondDao.remove(policyCond);
+ }
+
+ List<XXResourceDef> resDefList = daoMgr.getXXResourceDef().findByServiceDefId(serviceDefId);
+ for(XXResourceDef resDef : resDefList) {
+ deleteXXResourceDef(resDef);
+ }
+
+ XXServiceConfigDefDao configDefDao = daoMgr.getXXServiceConfigDef();
+ List<XXServiceConfigDef> configDefList = configDefDao.findByServiceDefId(serviceDefId);
+ for(XXServiceConfigDef configDef : configDefList) {
+ configDefDao.remove(configDef);
+ }
+
+ XXServiceDao serviceDao = daoMgr.getXXService();
+ List<XXService> serviceList = serviceDao.findByServiceDefId(serviceDefId);
+ for(XXService service : serviceList) {
+ deleteService(service.getId());
+ }
+
+ Long version = serviceDef.getVersion();
+ if(version == null) {
+ version = new Long(1);
+ LOG.info("Found Version Value: `null`, so setting value of version to 1, While updating object, version should not be null.");
+ } else {
+ version = new Long(version.longValue() + 1);
+ }
+ serviceDef.setVersion(version);
+
+ serviceDefService.delete(serviceDef);
+ LOG.info("ServiceDefinition has been deleted successfully. Service-Def Name: " + serviceDef.getName());
+
+ dataHistService.createObjectDataHistory(serviceDef, RangerDataHistService.ACTION_DELETE);
if (LOG.isDebugEnabled()) {
- LOG.debug("<== ServiceDefDBStore.deleteServiceDef(" + servceId + ")");
+ LOG.debug("<== ServiceDefDBStore.deleteServiceDef(" + serviceDefId + ")");
+ }
+ }
+
+ public void deleteXXAccessTypeDef(XXAccessTypeDef xAccess) {
+ List<XXAccessTypeDefGrants> atdGrantsList = daoMgr.getXXAccessTypeDefGrants().findByATDId(xAccess.getId());
+
+ for (XXAccessTypeDefGrants atdGrant : atdGrantsList) {
+ daoMgr.getXXAccessTypeDefGrants().remove(atdGrant);
+ }
+
+ List<XXPolicyItemAccess> policyItemAccessList = daoMgr.getXXPolicyItemAccess().findByType(xAccess.getId());
+ for (XXPolicyItemAccess policyItemAccess : policyItemAccessList) {
+ daoMgr.getXXPolicyItemAccess().remove(policyItemAccess);
+ }
+ daoMgr.getXXAccessTypeDef().remove(xAccess);
+ }
+
+ public void deleteXXResourceDef(XXResourceDef xRes) {
+
+ List<XXResourceDef> xChildObjs = daoMgr.getXXResourceDef().findByParentResId(xRes.getId());
+ for(XXResourceDef childRes : xChildObjs) {
+ deleteXXResourceDef(childRes);
+ }
+
+ List<XXPolicyResource> xxResources = daoMgr.getXXPolicyResource().findByResDefId(xRes.getId());
+ for (XXPolicyResource xPolRes : xxResources) {
+ deleteXXPolicyResource(xPolRes);
+ }
+
+ daoMgr.getXXResourceDef().remove(xRes);
+ }
+
+ public void deleteXXPolicyResource(XXPolicyResource xPolRes) {
+ List<XXPolicyResourceMap> polResMapList = daoMgr.getXXPolicyResourceMap().findByPolicyResId(xPolRes.getId());
+ XXPolicyResourceMapDao polResMapDao = daoMgr.getXXPolicyResourceMap();
+ for (XXPolicyResourceMap xxPolResMap : polResMapList) {
+ polResMapDao.remove(xxPolResMap);
}
+ daoMgr.getXXPolicyResource().remove(xPolRes);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java
index 2ee8e9b..14e723e 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java
@@ -47,4 +47,28 @@ public class XXAccessTypeDefGrantsDao extends BaseDao<XXAccessTypeDefGrants> {
}
}
+ public XXAccessTypeDefGrants findByNameAndATDId(Long atdId, String name) {
+ if (atdId == null || name == null) {
+ return null;
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXAccessTypeDefGrants.findByNameAndATDId", tClass)
+ .setParameter("atdId", atdId).setParameter("name", name).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public List<XXAccessTypeDefGrants> findByATDId(Long atdId) {
+ if (atdId == null) {
+ return new ArrayList<XXAccessTypeDefGrants>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXAccessTypeDefGrants.findByATDId", tClass)
+ .setParameter("atdId", atdId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXAccessTypeDefGrants>();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
index e2f5a41..eb7c2aa 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
@@ -84,4 +84,16 @@ public class XXPolicyDao extends BaseDao<XXPolicy> {
}
}
+ public List<XXPolicy> findByServiceDefId(Long serviceDefId) {
+ if(serviceDefId == null) {
+ return new ArrayList<XXPolicy>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXPolicy.findByServiceDefId", tClass)
+ .setParameter("serviceDefId", serviceDefId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXPolicy>();
+ }
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java
index a5a180a..d9952e0 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java
@@ -44,4 +44,16 @@ public class XXPolicyItemAccessDao extends BaseDao<XXPolicyItemAccess> {
}
}
+ public List<XXPolicyItemAccess> findByType(Long type) {
+ if (type == null) {
+ return new ArrayList<XXPolicyItemAccess>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXPolicyItemAccess.findByType", tClass)
+ .setParameter("type", type).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXPolicyItemAccess>();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java
index 4296816..4ed59f1 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java
@@ -59,4 +59,16 @@ public class XXPolicyItemConditionDao extends BaseDao<XXPolicyItemCondition> {
}
}
+ public List<XXPolicyItemCondition> findByPolicyConditionDefId(Long polCondDefId) {
+ if (polCondDefId == null) {
+ return new ArrayList<XXPolicyItemCondition>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXPolicyItemCondition.findByPolicyConditionDefId", tClass)
+ .setParameter("polCondDefId", polCondDefId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXPolicyItemCondition>();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java
index bb55bc2..0cdb75e 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java
@@ -58,4 +58,16 @@ public class XXPolicyResourceDao extends BaseDao<XXPolicyResource> {
}
}
+ public List<XXPolicyResource> findByResDefId(Long resDefId) {
+ if (resDefId == null) {
+ return new ArrayList<XXPolicyResource>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXPolicyResource.findByResDefId", tClass)
+ .setParameter("resDefId", resDefId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXPolicyResource>();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java
index a3e2244..aee56e8 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java
@@ -86,4 +86,16 @@ public class XXResourceDefDao extends BaseDao<XXResourceDef> {
}
}
+ public List<XXResourceDef> findByParentResId(Long parentId) {
+ if(parentId == null) {
+ return new ArrayList<XXResourceDef>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXResourceDef.findByParentResId", tClass)
+ .setParameter("parentId", parentId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXResourceDef>();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
index a665bb7..4f35ad3 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java
@@ -17,6 +17,9 @@
package org.apache.ranger.db;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.persistence.NoResultException;
import org.apache.ranger.common.db.BaseDao;
@@ -54,4 +57,16 @@ public class XXServiceDao extends BaseDao<XXService> {
}
}
+ public List<XXService> findByServiceDefId(Long serviceDefId) {
+ if (serviceDefId == null) {
+ return new ArrayList<XXService>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXService.findByServiceDefId", tClass)
+ .setParameter("serviceDefId", serviceDefId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXService>();
+ }
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/entity/XXAccessTypeDefGrants.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXAccessTypeDefGrants.java b/security-admin/src/main/java/org/apache/ranger/entity/XXAccessTypeDefGrants.java
index 118d5d9..fa90d0b 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXAccessTypeDefGrants.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXAccessTypeDefGrants.java
@@ -85,7 +85,7 @@ public class XXAccessTypeDefGrants extends XXDBBase implements
* @param atdId
* Value to set member attribute <b> atdId</b>
*/
- public void setAtdid(Long atdId) {
+ public void setAtdId(Long atdId) {
this.atdId = atdId;
}
@@ -94,7 +94,7 @@ public class XXAccessTypeDefGrants extends XXDBBase implements
*
* @return Date - value of member attribute <b>atdId</b> .
*/
- public Long getAtdid() {
+ public Long getAtdId() {
return this.atdId;
}
@@ -105,7 +105,7 @@ public class XXAccessTypeDefGrants extends XXDBBase implements
* @param impliedGrant
* Value to set member attribute <b> impliedGrant</b>
*/
- public void setImpliedgrant(String impliedGrant) {
+ public void setImpliedGrant(String impliedGrant) {
this.impliedGrant = impliedGrant;
}
@@ -114,7 +114,7 @@ public class XXAccessTypeDefGrants extends XXDBBase implements
*
* @return Date - value of member attribute <b>impliedGrant</b> .
*/
- public String getImpliedgrant() {
+ public String getImpliedGrant() {
return this.impliedGrant;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
index 9527bcb..059f787 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
@@ -153,16 +153,16 @@ public class PublicAPIsv2 {
@DELETE
@Path("/api/servicedef/{id}")
@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public void deleteServiceDef(@PathParam("id") Long id) {
- serviceREST.deleteServiceDef(id);
+ public void deleteServiceDef(@PathParam("id") Long id, @Context HttpServletRequest request) {
+ serviceREST.deleteServiceDef(id, request);
}
@DELETE
@Path("/api/servicedef/name/{name}")
@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public void deleteServiceDefByName(@PathParam("name") String name) {
+ public void deleteServiceDefByName(@PathParam("name") String name, @Context HttpServletRequest request) {
RangerServiceDef serviceDef = serviceREST.getServiceDefByName(name);
- serviceREST.deleteServiceDef(serviceDef.getId());
+ serviceREST.deleteServiceDef(serviceDef.getId(), request);
}
/*
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 38c011c..a9ade43 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -201,7 +201,7 @@ public class ServiceREST {
@Path("/definitions/{id}")
@Produces({ "application/json", "application/xml" })
@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public void deleteServiceDef(@PathParam("id") Long id) {
+ public void deleteServiceDef(@PathParam("id") Long id, @Context HttpServletRequest request) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> ServiceREST.deleteServiceDef(" + id + ")");
}
@@ -209,7 +209,14 @@ public class ServiceREST {
try {
RangerServiceDefValidator validator = validatorFactory.getServiceDefValidator(svcStore);
validator.validate(id, Action.DELETE);
- svcStore.deleteServiceDef(id);
+
+ String forceDeleteStr = request.getParameter("forceDelete");
+ boolean forceDelete = false;
+ if(!StringUtils.isEmpty(forceDeleteStr) && forceDeleteStr.equalsIgnoreCase("true")) {
+ forceDelete = true;
+ }
+
+ svcStore.deleteServiceDef(id, forceDelete);
} catch(Exception excp) {
LOG.error("deleteServiceDef(" + id + ") failed", excp);
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index b16635f..737675d 100644
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -209,6 +209,11 @@
<named-query name="XXPolicy.findByResourceSignature">
<query>select obj from XXPolicy obj where obj.resourceSignature = :resSignature</query>
</named-query>
+
+ <named-query name="XXPolicy.findByServiceDefId">
+ <query>select obj from XXPolicy obj, XXService svc where
+ obj.service = svc.id and svc.type = :serviceDefId</query>
+ </named-query>
<!-- XXServiceDef -->
<named-query name="XXServiceDef.findByName">
@@ -236,11 +241,25 @@
and xSvc.id = xPol.service and xPol.id = :policyId and obj.name = :name order by obj.level</query>
</named-query>
+ <named-query name="XXResourceDef.findByParentResId">
+ <query>
+ select obj from XXResourceDef obj where obj.parent = :parentId
+ </query>
+ </named-query>
+
<!-- XXAccessTypeDefGrants -->
<named-query name="XXAccessTypeDefGrants.findImpliedGrantsByATDId">
<query>select obj.impliedGrant from XXAccessTypeDefGrants obj where obj.atdId = :atdId</query>
</named-query>
+ <named-query name="XXAccessTypeDefGrants.findByNameAndATDId">
+ <query>select obj from XXAccessTypeDefGrants obj where obj.impliedGrant = :name and obj.atdId = :atdId</query>
+ </named-query>
+
+ <named-query name="XXAccessTypeDefGrants.findByATDId">
+ <query>select obj from XXAccessTypeDefGrants obj where obj.atdId = :atdId</query>
+ </named-query>
+
<!-- XXEnumElementDef -->
<named-query name="XXEnumElementDef.findByEnumDefId">
<query>select obj from XXEnumElementDef obj where obj.enumDefId = :enumDefId order by obj.order</query>
@@ -321,6 +340,10 @@
<named-query name="XXService.getMaxIdOfXXService">
<query>select MAX(obj.id) from XXService obj</query>
</named-query>
+
+ <named-query name="XXService.findByServiceDefId">
+ <query>select obj from XXService obj where obj.type = :serviceDefId</query>
+ </named-query>
<!-- XXPolicyResource -->
<named-query name="XXPolicyResource.findByResDefIdAndPolicyId">
@@ -332,6 +355,10 @@
<query>select obj from XXPolicyResource obj where obj.policyId = :policyId</query>
</named-query>
+ <named-query name="XXPolicyResource.findByResDefId">
+ <query>select obj from XXPolicyResource obj where obj.resDefId = :resDefId</query>
+ </named-query>
+
<!-- XXPolicyResourceMap -->
<named-query name="XXPolicyResourceMap.findByPolicyResId">
<query>select obj from XXPolicyResourceMap obj where obj.resourceId = :polResId order by obj.order</query>
@@ -341,7 +368,11 @@
<named-query name="XXPolicyItemAccess.findByPolicyItemId">
<query>select obj from XXPolicyItemAccess obj where obj.policyItemId = :polItemId order by obj.order</query>
</named-query>
-
+
+ <named-query name="XXPolicyItemAccess.findByType">
+ <query>select obj from XXPolicyItemAccess obj where obj.type = :type</query>
+ </named-query>
+
<!-- XXPolicyItemCondition -->
<named-query name="XXPolicyItemCondition.findByPolicyItemId">
<query>select obj from XXPolicyItemCondition obj where obj.policyItemId = :polItemId order by obj.order</query>
@@ -352,6 +383,10 @@
obj.policyItemId = :polItemId and obj.type = :polCondDefId order by obj.order</query>
</named-query>
+ <named-query name="XXPolicyItemCondition.findByPolicyConditionDefId">
+ <query>select obj from XXPolicyItemCondition obj where obj.type = :polCondDefId</query>
+ </named-query>
+
<!-- XXPolicyItemGroupPerm -->
<named-query name="XXPolicyItemGroupPerm.findByPolicyItemId">
<query>select obj from XXPolicyItemGroupPerm obj where obj.policyItemId = :polItemId order by obj.order</query>
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
index b523552..0676512 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
@@ -352,7 +352,8 @@ public class TestServiceREST {
Mockito.when(validatorFactory.getServiceDefValidator(svcStore))
.thenReturn(serviceDefValidator);
- serviceREST.deleteServiceDef(rangerServiceDef.getId());
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ serviceREST.deleteServiceDef(rangerServiceDef.getId(), request);
Mockito.verify(validatorFactory).getServiceDefValidator(svcStore);
}
@@ -487,7 +488,8 @@ public class TestServiceREST {
Mockito.when(validatorFactory.getServiceDefValidator(svcStore))
.thenReturn(serviceDefValidator);
- serviceREST.deleteServiceDef(rangerServiceDef.getId());
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ serviceREST.deleteServiceDef(rangerServiceDef.getId(), request);
Mockito.verify(validatorFactory).getServiceDefValidator(svcStore);
Mockito.when(svcStore.getService(rangerService.getId())).thenReturn(
rangerService);
@@ -522,7 +524,8 @@ public class TestServiceREST {
Mockito.when(validatorFactory.getServiceDefValidator(svcStore))
.thenReturn(serviceDefValidator);
- serviceREST.deleteServiceDef(rangerServiceDef.getId());
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ serviceREST.deleteServiceDef(rangerServiceDef.getId(), request);
Mockito.verify(validatorFactory).getServiceDefValidator(svcStore);
Mockito.verify(serviceMgr).validateConfig(rangerService, svcStore);
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c1de019f/security-admin/src/test/java/org/apache/ranger/rest/TestServiceRESTForValidation.java
----------------------------------------------------------------------
diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceRESTForValidation.java b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceRESTForValidation.java
index b33cd97..f4534a1 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceRESTForValidation.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceRESTForValidation.java
@@ -29,6 +29,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.WebApplicationException;
import org.apache.commons.logging.Log;
@@ -46,6 +47,7 @@ import org.apache.ranger.plugin.model.validation.RangerValidator.Action;
import org.apache.ranger.rest.ServiceREST;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
public class TestServiceRESTForValidation {
@@ -309,7 +311,8 @@ public class TestServiceRESTForValidation {
_serviceRest.updateServiceDef(_serviceDef);
verify(_serviceDefValidator).validate(_serviceDef, Action.UPDATE);
- _serviceRest.deleteServiceDef(3L);
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ _serviceRest.deleteServiceDef(3L, request);
verify(_serviceDefValidator).validate(3L, Action.DELETE);
} catch (Throwable t) {
t.printStackTrace();
@@ -346,7 +349,8 @@ public class TestServiceRESTForValidation {
doThrow(_exception).when(_serviceDefValidator).validate(4L, Action.DELETE);
try {
- _serviceRest.deleteServiceDef(4L);
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ _serviceRest.deleteServiceDef(4L, request);
fail("Should have thrown exception!");
} catch (WebApplicationException t) {
verify(_serviceDefValidator).validate(4L, Action.DELETE);
@@ -385,7 +389,8 @@ public class TestServiceRESTForValidation {
doThrow(_exception).when(_store).deleteServiceDef(5L);
try {
- _serviceRest.deleteServiceDef(5L);
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ _serviceRest.deleteServiceDef(5L, request);
fail("Should have thrown exception!");
} catch (WebApplicationException e) {
verify(_serviceDefValidator).validate(5L, Action.DELETE);