Repository: incubator-ranger
Updated Branches:
  refs/heads/ranger-0.5 0c9b8be1a -> 0fef5d866


RANGER-960: service-def update should preserve the permission order

(cherry picked from commit 1fc84ff6bd864e908ee173aff37d5b0388de2110)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/0fef5d86
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/0fef5d86
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/0fef5d86

Branch: refs/heads/ranger-0.5
Commit: 0fef5d8669a9e7404904c23d73512334b9f05c00
Parents: 0c9b8be
Author: Madhan Neethiraj <[email protected]>
Authored: Thu Apr 28 22:49:45 2016 -0700
Committer: Madhan Neethiraj <[email protected]>
Committed: Fri Apr 29 16:19:39 2016 -0700

----------------------------------------------------------------------
 .../org/apache/ranger/biz/ServiceDBStore.java   | 25 ++++++++++++++++----
 .../resources/META-INF/jpa_named_queries.xml    |  5 ++--
 .../apache/ranger/biz/TestServiceDBStore.java   |  7 ++++++
 3 files changed, 30 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0fef5d86/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 8ec820a..70118d3 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
@@ -445,13 +445,15 @@ public class ServiceDBStore implements ServiceStore {
                List<XXEnumDef> xxEnums = 
daoMgr.getXXEnumDef().findByServiceDefId(serviceDefId);
 
                XXServiceConfigDefDao xxServiceConfigDao = 
daoMgr.getXXServiceConfigDef();
-               for (RangerServiceConfigDef config : configs) {
+               for (int i = 0; i < configs.size(); i++) {
+                       RangerServiceConfigDef config = configs.get(i);
                        boolean found = false;
                        for (XXServiceConfigDef xConfig : xxConfigs) {
                                if (config.getItemId() != null && 
config.getItemId().equals(xConfig.getItemId())) {
                                        found = true;
                                        xConfig = 
serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, 
createdSvcDef,
                                                        
RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+                                       xConfig.setOrder(i);
                                        xConfig = 
xxServiceConfigDao.update(xConfig);
                                        config = 
serviceDefService.populateXXToRangerServiceConfigDef(xConfig);
                                        break;
@@ -461,6 +463,7 @@ public class ServiceDBStore implements ServiceStore {
                                XXServiceConfigDef xConfig = new 
XXServiceConfigDef();
                                xConfig = 
serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, 
createdSvcDef,
                                                
RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+                               xConfig.setOrder(i);
                                xConfig = xxServiceConfigDao.create(xConfig);
                                config = 
serviceDefService.populateXXToRangerServiceConfigDef(xConfig);
                        }
@@ -522,13 +525,15 @@ public class ServiceDBStore implements ServiceStore {
                }
 
                XXAccessTypeDefDao xxATDDao = daoMgr.getXXAccessTypeDef();
-               for (RangerAccessTypeDef access : accessTypes) {
+               for(int i = 0; i < accessTypes.size(); i++) {
+                       RangerAccessTypeDef access = accessTypes.get(i);
                        boolean found = false;
                        for (XXAccessTypeDef xAccess : xxAccessTypes) {
                                if (access.getItemId() != null && 
access.getItemId().equals(xAccess.getItemId())) {
                                        found = true;
                                        xAccess = 
serviceDefService.populateRangerAccessTypeDefToXX(access, xAccess, 
createdSvcDef,
                                                        
RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+                                       xAccess.setOrder(i);
                                        xAccess = xxATDDao.update(xAccess);
 
                                        Collection<String> impliedGrants = 
access.getImpliedGrants();
@@ -572,6 +577,7 @@ public class ServiceDBStore implements ServiceStore {
                                XXAccessTypeDef xAccessType = new 
XXAccessTypeDef();
                                xAccessType = 
serviceDefService.populateRangerAccessTypeDefToXX(access, xAccessType, 
createdSvcDef,
                                                
RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+                               xAccessType.setOrder(i);
                                xAccessType = xxATDDao.create(xAccessType);
 
                                Collection<String> impliedGrants = 
access.getImpliedGrants();
@@ -606,13 +612,15 @@ public class ServiceDBStore implements ServiceStore {
                }
 
                XXPolicyConditionDefDao xxPolCondDao = 
daoMgr.getXXPolicyConditionDef();
-               for (RangerPolicyConditionDef condition : policyConditions) {
+               for (int i = 0; i < policyConditions.size(); i++) {
+                       RangerPolicyConditionDef condition = 
policyConditions.get(i);
                        boolean found = false;
                        for (XXPolicyConditionDef xCondition : 
xxPolicyConditions) {
                                if (condition.getItemId() != null && 
condition.getItemId().equals(xCondition.getItemId())) {
                                        found = true;
                                        xCondition = 
serviceDefService.populateRangerPolicyConditionDefToXX(condition, xCondition,
                                                        createdSvcDef, 
RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+                                       xCondition.setOrder(i);
                                        xCondition = 
xxPolCondDao.update(xCondition);
                                        condition = 
serviceDefService.populateXXToRangerPolicyConditionDef(xCondition);
                                        break;
@@ -622,6 +630,7 @@ public class ServiceDBStore implements ServiceStore {
                                XXPolicyConditionDef xCondition = new 
XXPolicyConditionDef();
                                xCondition = 
serviceDefService.populateRangerPolicyConditionDefToXX(condition, xCondition,
                                                createdSvcDef, 
RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+                               xCondition.setOrder(i);
                                xCondition = xxPolCondDao.create(xCondition);
                                condition = 
serviceDefService.populateXXToRangerPolicyConditionDef(xCondition);
                        }
@@ -650,13 +659,15 @@ public class ServiceDBStore implements ServiceStore {
                }
 
                XXContextEnricherDefDao xxContextEnricherDao = 
daoMgr.getXXContextEnricherDef();
-               for (RangerContextEnricherDef context : contextEnrichers) {
+               for (int i = 0; i < contextEnrichers.size(); i++) {
+                       RangerContextEnricherDef context = 
contextEnrichers.get(i);
                        boolean found = false;
                        for (XXContextEnricherDef xContext : 
xxContextEnrichers) {
                                if (context.getItemId() != null && 
context.getItemId().equals(xContext.getItemId())) {
                                        found = true;
                                        xContext = 
serviceDefService.populateRangerContextEnricherDefToXX(context, xContext, 
createdSvcDef,
                                                        
RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+                                       xContext.setOrder(i);
                                        xContext = 
xxContextEnricherDao.update(xContext);
                                        context = 
serviceDefService.populateXXToRangerContextEnricherDef(xContext);
                                        break;
@@ -666,6 +677,7 @@ public class ServiceDBStore implements ServiceStore {
                                XXContextEnricherDef xContext = new 
XXContextEnricherDef();
                                xContext = 
serviceDefService.populateRangerContextEnricherDefToXX(context, xContext, 
createdSvcDef,
                                                
RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+                               xContext.setOrder(i);
                                xContext = 
xxContextEnricherDao.create(xContext);
                                context = 
serviceDefService.populateXXToRangerContextEnricherDef(xContext);
                        }
@@ -697,13 +709,15 @@ public class ServiceDBStore implements ServiceStore {
                                        List<XXEnumElementDef> xxEnumEleDefs = 
xEnumEleDao.findByEnumDefId(xEnumDef.getId());
                                        List<RangerEnumElementDef> enumEleDefs 
= enumDef.getElements();
 
-                                       for (RangerEnumElementDef eleDef : 
enumEleDefs) {
+                                       for (int i = 0; i < enumEleDefs.size(); 
i++) {
+                                               RangerEnumElementDef eleDef = 
enumEleDefs.get(i);
                                                boolean foundEle = false;
                                                for (XXEnumElementDef xEleDef : 
xxEnumEleDefs) {
                                                        if (eleDef.getItemId() 
!= null && eleDef.getItemId().equals(xEleDef.getItemId())) {
                                                                foundEle = true;
                                                                xEleDef = 
serviceDefService.populateRangerEnumElementDefToXX(eleDef, xEleDef, xEnumDef,
                                                                                
RangerServiceDefService.OPERATION_UPDATE_CONTEXT);
+                                                               
xEleDef.setOrder(i);
                                                                xEleDef = 
xEnumEleDao.update(xEleDef);
                                                                break;
                                                        }
@@ -712,6 +726,7 @@ public class ServiceDBStore implements ServiceStore {
                                                        XXEnumElementDef 
xElement = new XXEnumElementDef();
                                                        xElement = 
serviceDefService.populateRangerEnumElementDefToXX(eleDef, xElement, xEnumDef,
                                                                        
RangerServiceDefService.OPERATION_CREATE_CONTEXT);
+                                                       xElement.setOrder(i);
                                                        xElement = 
xEnumEleDao.create(xElement);
                                                }
                                        }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0fef5d86/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 1e2bf9b..8df2505 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
@@ -321,7 +321,7 @@
 
        <!-- XXAccessTypeDef -->
        <named-query name="XXAccessTypeDef.findByServiceDefId">
-               <query>select obj from XXAccessTypeDef obj where obj.defId = 
:serviceDefId</query>
+               <query>select obj from XXAccessTypeDef obj where obj.defId = 
:serviceDefId order by obj.order</query>
        </named-query>
 
        <named-query name="XXAccessTypeDef.findByNameAndServiceId">
@@ -331,7 +331,7 @@
 
        <!-- XXPolicyConditionDef -->
        <named-query name="XXPolicyConditionDef.findByServiceDefId">
-               <query>select obj from XXPolicyConditionDef obj where obj.defId 
= :serviceDefId</query>
+               <query>select obj from XXPolicyConditionDef obj where obj.defId 
= :serviceDefId order by obj.order</query>
        </named-query>
 
        <named-query name="XXPolicyConditionDef.findByServiceDefIdAndName">
@@ -365,6 +365,7 @@
                <query>select obj from XXEnumDef obj where obj.defId = 
:serviceDefId</query>
        </named-query>
 
+
        <!-- XXServiceConfigMap -->
        <named-query name="XXServiceConfigMap.findByServiceId">
                <query>select obj from XXServiceConfigMap obj where 
obj.serviceId = :serviceId</query>

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0fef5d86/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 cc4d5a0..56a39f0 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
@@ -498,6 +498,13 @@ public class TestServiceDBStore {
                serviceConfigDefObj.setType("1");
                svcConfDefList.add(serviceConfigDefObj);
 
+               Mockito.when(
+                               
serviceDefService.populateRangerServiceConfigDefToXX(
+                                               
Mockito.any(RangerServiceConfigDef.class), 
Mockito.any(XXServiceConfigDef.class), Mockito.any(XXServiceDef.class),
+                                               
Mockito.eq(RangerServiceDefService.OPERATION_CREATE_CONTEXT))).thenReturn(serviceConfigDefObj);
+               Mockito.when(xServiceConfigDefDao.create(serviceConfigDefObj))
+                               .thenReturn(serviceConfigDefObj);
+
                List<XXResourceDef> resDefList = new ArrayList<XXResourceDef>();
                XXResourceDef resourceDef = new XXResourceDef();
                resourceDef.setAddedByUserId(Id);

Reply via email to