You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2021/11/29 21:57:50 UTC

[ranger] branch ranger-2.3 updated: RANGER-3526: policy evaluation ordering to use name as secondary sorting key - #2

This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch ranger-2.3
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/ranger-2.3 by this push:
     new ed0fe3a  RANGER-3526: policy evaluation ordering to use name as secondary sorting key - #2
ed0fe3a is described below

commit ed0fe3a19bf531316d2b128afd6e4ae8c87328d2
Author: Madhan Neethiraj <ma...@apache.org>
AuthorDate: Mon Nov 29 09:03:09 2021 -0800

    RANGER-3526: policy evaluation ordering to use name as secondary sorting key - #2
    
    (cherry picked from commit fe97016e147295aef5aa9041744452bb647cc724)
---
 .../plugin/policyevaluator/RangerPolicyEvaluator.java    | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerPolicyEvaluator.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerPolicyEvaluator.java
index 8fbbf94..0b7f7ba 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerPolicyEvaluator.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerPolicyEvaluator.java
@@ -33,8 +33,6 @@ import java.util.Set;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ranger.plugin.model.RangerPolicy;
-import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemDataMaskInfo;
-import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemRowFilterInfo;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerDataMaskPolicyItem;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess;
@@ -55,10 +53,8 @@ import org.apache.ranger.plugin.policyresourcematcher.RangerPolicyResourceMatche
 
 import static org.apache.ranger.plugin.policyevaluator.RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_ALLOW;
 import static org.apache.ranger.plugin.policyevaluator.RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_ALLOW_EXCEPTIONS;
-import static org.apache.ranger.plugin.policyevaluator.RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_DATAMASK;
 import static org.apache.ranger.plugin.policyevaluator.RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_DENY;
 import static org.apache.ranger.plugin.policyevaluator.RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_DENY_EXCEPTIONS;
-import static org.apache.ranger.plugin.policyevaluator.RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_ROWFILTER;
 
 public interface RangerPolicyEvaluator extends RangerPolicyResourceEvaluator {
 	Comparator<RangerPolicyEvaluator> EVAL_ORDER_COMPARATOR = new RangerPolicyEvaluator.PolicyEvalOrderComparator();
@@ -184,6 +180,14 @@ public interface RangerPolicyEvaluator extends RangerPolicyResourceEvaluator {
 		return  CollectionUtils.isNotEmpty(policyItem.getRoles());
 	}
 
+	static int compareStrings(String str1, String str2) {
+		if (str1 == null) {
+			return str2 == null ? 0 : -1;
+		} else {
+			return str2 == null ? 1 : str1.compareTo(str2);
+		}
+	}
+
 	class PolicyEvalOrderComparator implements Comparator<RangerPolicyEvaluator>, Serializable {
 		@Override
 		public int compare(RangerPolicyEvaluator me, RangerPolicyEvaluator other) {
@@ -203,7 +207,7 @@ public interface RangerPolicyEvaluator extends RangerPolicyResourceEvaluator {
 				result =  Integer.compare(me.getEvalOrder(), other.getEvalOrder());
 
 				if (result == 0) {
-					result = me.getPolicy().getName().compareTo(other.getPolicy().getName());
+					result = compareStrings(me.getPolicy().getName(), other.getPolicy().getName());
 				}
 			}
 
@@ -227,7 +231,7 @@ public interface RangerPolicyEvaluator extends RangerPolicyResourceEvaluator {
 			} else if (!me.hasDeny() && other.hasDeny()) {
 				result = 1;
 			} else {
-				result = me.getPolicy().getName().compareTo(other.getPolicy().getName());
+				result = compareStrings(me.getPolicy().getName(), other.getPolicy().getName());
 			}
 
 			return result;