Repository: incubator-ranger Updated Branches: refs/heads/master 38b79e725 -> 2c7f617be
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/2c7f617b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java index a0047a5..b349768 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java @@ -44,6 +44,7 @@ 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.RangerRowFilterDef; import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef; import org.apache.ranger.plugin.util.SearchFilter; import org.apache.ranger.plugin.util.ServiceDefUtil; @@ -144,7 +145,9 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDefBase, V serviceDef.setEnums(enums); } - RangerDataMaskDef dataMaskDef = new RangerDataMaskDef(); + RangerDataMaskDef dataMaskDef = new RangerDataMaskDef(); + RangerRowFilterDef rowFilterDef = new RangerRowFilterDef(); + List<XXDataMaskTypeDef> xDataMaskTypes = daoMgr.getXXDataMaskTypeDef().findByServiceDefId(serviceDefId); if (!stringUtil.isEmpty(xDataMaskTypes)) { List<RangerDataMaskTypeDef> dataMaskTypes = new ArrayList<RangerDataMaskTypeDef>(); @@ -163,6 +166,12 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDefBase, V dataMaskDef.getResources().add(dataMaskResource); } + + if (StringUtils.isNotEmpty(xResource.getRowFilterOptions())) { + RangerResourceDef resource = jsonToObject(xResource.getRowFilterOptions(), RangerResourceDef.class); + + rowFilterDef.getResources().add(resource); + } } } @@ -173,9 +182,16 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDefBase, V dataMaskDef.getAccessTypes().add(dataMaskAccessType); } + + if(StringUtils.isNotEmpty(xAtd.getRowFilterOptions())) { + RangerAccessTypeDef accessType = jsonToObject(xAtd.getRowFilterOptions(), RangerAccessTypeDef.class); + + rowFilterDef.getAccessTypes().add(accessType); + } } } serviceDef.setDataMaskDef(dataMaskDef); + serviceDef.setRowFilterDef(rowFilterDef); ServiceDefUtil.normalize(serviceDef); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/2c7f617b/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 739b5ca..c70dcba 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 @@ -593,6 +593,27 @@ <query>select obj from XXPolicyItemDataMaskInfo obj where obj.type = :type</query> </named-query> + <!-- XXPolicyItemRowFilterInfo --> + <named-query name="XXPolicyItemRowFilterInfo.findByPolicyItemId"> + <query>select obj from XXPolicyItemRowFilterInfo obj where obj.policyItemId = :polItemId</query> + </named-query> + + <named-query name="XXPolicyItemRowFilterInfo.findByPolicyId"> + <query>select obj from XXPolicyItemRowFilterInfo obj, XXPolicyItem item + where obj.policyItemId = item.id + and item.policyId = :policyId + order by obj.policyItemId + </query> + </named-query> + + <named-query name="XXPolicyItemRowFilterInfo.findByServiceId"> + <query>select obj from XXPolicyItemRowFilterInfo obj, XXPolicyItem item + where obj.policyItemId = item.id + and item.policyId in (select policy.id from XXPolicy policy where policy.service = :serviceId) + order by item.policyId, obj.policyItemId + </query> + </named-query> + <!-- XXDataHist --> <named-query name="XXDataHist.findLatestByObjectClassTypeAndObjectId"> <query>select obj from XXDataHist obj where obj.objectId = :objectId http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/2c7f617b/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java ---------------------------------------------------------------------- diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java b/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java index 5cb0290..17da9be 100644 --- a/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java +++ b/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java @@ -312,6 +312,10 @@ public class TestServiceDBStore { XXEnumElementDef xEnumElementDef = Mockito.mock(XXEnumElementDef.class); XXAccessTypeDefGrants xAccessTypeDefGrants = Mockito .mock(XXAccessTypeDefGrants.class); + List<XXAccessTypeDef> xAccessTypeDefs = new ArrayList<XXAccessTypeDef>(); + xAccessTypeDefs.add(xAccessTypeDef); + List<XXResourceDef> xResourceDefs = new ArrayList<XXResourceDef>(); + xResourceDefs.add(xResourceDef); RangerServiceConfigDef rangerServiceConfigDef = Mockito .mock(RangerServiceConfigDef.class); @@ -353,6 +357,7 @@ public class TestServiceDBStore { .thenReturn(xResourceDef); Mockito.when(xResourceDefDao.create(xResourceDef)).thenReturn( xResourceDef); + Mockito.when(xResourceDefDao.findByServiceDefId(xServiceDef.getId())).thenReturn(xResourceDefs); Mockito.when(daoManager.getXXAccessTypeDef()).thenReturn( xAccessTypeDefDao); @@ -362,6 +367,7 @@ public class TestServiceDBStore { .thenReturn(xAccessTypeDef); Mockito.when(xAccessTypeDefDao.create(xAccessTypeDef)).thenReturn( xAccessTypeDef); + Mockito.when(xAccessTypeDefDao.findByServiceDefId(xServiceDef.getId())).thenReturn(xAccessTypeDefs); Mockito.when(daoManager.getXXAccessTypeDefGrants()).thenReturn( xAccessTypeDefGrantsDao); @@ -1305,6 +1311,7 @@ public class TestServiceDBStore { XXService xService = Mockito.mock(XXService.class); XXPolicyItemDao xPolicyItemDao = Mockito.mock(XXPolicyItemDao.class); XXPolicyItemDataMaskInfoDao xxPolicyItemDataMaskInfoDao = Mockito.mock(XXPolicyItemDataMaskInfoDao.class); + XXPolicyItemRowFilterInfoDao xxPolicyItemRowFilterInfoDao = Mockito.mock(XXPolicyItemRowFilterInfoDao.class); XXPolicyItemConditionDao xPolicyItemConditionDao = Mockito .mock(XXPolicyItemConditionDao.class); XXPolicyItemGroupPermDao xPolicyItemGroupPermDao = Mockito @@ -1367,6 +1374,7 @@ public class TestServiceDBStore { policyItemList.add(policyItem); List<XXPolicyItemDataMaskInfo> policyItemDataMaskInfoList = new ArrayList<XXPolicyItemDataMaskInfo>(); + List<XXPolicyItemRowFilterInfo> policyItemRowFilterInfoList = new ArrayList<XXPolicyItemRowFilterInfo>(); List<XXPolicyItemCondition> policyItemConditionList = new ArrayList<XXPolicyItemCondition>(); XXPolicyItemCondition policyItemCondition = new XXPolicyItemCondition(); @@ -1478,6 +1486,9 @@ public class TestServiceDBStore { Mockito.when(daoManager.getXXPolicyItemDataMaskInfo()).thenReturn(xxPolicyItemDataMaskInfoDao); Mockito.when(xxPolicyItemDataMaskInfoDao.findByPolicyItemId(policyItem.getId())).thenReturn(policyItemDataMaskInfoList); + Mockito.when(daoManager.getXXPolicyItemRowFilterInfo()).thenReturn(xxPolicyItemRowFilterInfoDao); + Mockito.when(xxPolicyItemRowFilterInfoDao.findByPolicyItemId(policyItem.getId())).thenReturn(policyItemRowFilterInfoList); + Mockito.when(daoManager.getXXPolicyItemCondition()).thenReturn( xPolicyItemConditionDao); Mockito.when( @@ -2143,6 +2154,7 @@ public class TestServiceDBStore { XXService xService = Mockito.mock(XXService.class); XXPolicyItemDao xPolicyItemDao = Mockito.mock(XXPolicyItemDao.class); XXPolicyItemDataMaskInfoDao xPolicyItemDataMaskInfoDao = Mockito.mock(XXPolicyItemDataMaskInfoDao.class); + XXPolicyItemRowFilterInfoDao xPolicyItemRowFilterInfoDao = Mockito.mock(XXPolicyItemRowFilterInfoDao.class); XXPolicyItemConditionDao xPolicyItemConditionDao = Mockito .mock(XXPolicyItemConditionDao.class); XXPolicyItemGroupPermDao xPolicyItemGroupPermDao = Mockito @@ -2179,6 +2191,7 @@ public class TestServiceDBStore { policyItemList.add(policyItem); List<XXPolicyItemDataMaskInfo> policyItemDataMaskInfo = new ArrayList<XXPolicyItemDataMaskInfo>(); + List<XXPolicyItemRowFilterInfo> policyItemRowFilterInfo = new ArrayList<XXPolicyItemRowFilterInfo>(); List<XXPolicyItemCondition> policyItemConditionList = new ArrayList<XXPolicyItemCondition>(); XXPolicyItemCondition policyItemCondition = new XXPolicyItemCondition(); @@ -2284,6 +2297,10 @@ public class TestServiceDBStore { Mockito.when(xPolicyItemDataMaskInfoDao.findByPolicyId(policyItem.getId())) .thenReturn(policyItemDataMaskInfo); + Mockito.when(daoManager.getXXPolicyItemRowFilterInfo()).thenReturn(xPolicyItemRowFilterInfoDao); + Mockito.when(xPolicyItemRowFilterInfoDao.findByPolicyId(policyItem.getId())) + .thenReturn(policyItemRowFilterInfo); + Mockito.when(daoManager.getXXPolicyItemCondition()).thenReturn( xPolicyItemConditionDao); Mockito.when(
