From 1d4d8fbcbfdb06a56bfdb48dfeb883e1d74525f3 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 18 Feb 2015 17:15:17 +0000
Subject: [PATCH] Fixed a bug introduced in r11787.
---
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java | 57 ++++++++++++++++++++-------------------------------------
1 files changed, 20 insertions(+), 37 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java
index a04f4e7..b6324b0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java
@@ -40,32 +40,19 @@
* A class representing an ACI's targetattr keyword.
*/
public class TargetAttr {
- /*
- * Enumeration representing the targetattr operator.
- */
+ /** Enumeration representing the targetattr operator. */
private EnumTargetOperator operator = EnumTargetOperator.EQUALITY;
- /*
- * Flags that is set if all user attributes pattern seen "*".
- */
+ /** Flags that is set if all user attributes pattern seen "*". */
private boolean allUserAttributes;
-
- /*
- * Flags that is set if all operational attributes pattern seen "+".
- */
+ /** Flags that is set if all operational attributes pattern seen "+". */
private boolean allOpAttributes;
-
- /*
- * HashSet of the attribute types parsed by the constructor.
- */
+ /** Set of the attribute types parsed by the constructor. */
private HashSet<AttributeType> attributes = new HashSet<AttributeType>();
-
- /**
- * HashSet of the operational attribute types parsed by the constructor.
- */
+ /** Set of the operational attribute types parsed by the constructor. */
private HashSet<AttributeType> opAttributes = new HashSet<AttributeType>();
- /*
+ /**
* Regular expression that matches one or more ATTR_NAME's separated by
* the "||" token.
*/
@@ -170,7 +157,6 @@
return allUserAttributes;
}
-
/**
* This flag is set if the parsing code saw:
* targetattr="+" or targetattr != "+".
@@ -189,12 +175,12 @@
return attributes;
}
- /**
- * Return array holding operational attribute types to be evaluated
- * in the expression.
- * @return Array holding attribute types.
- */
- public HashSet<AttributeType> getOpAttributes() {
+ /**
+ * Return array holding operational attribute types to be evaluated
+ * in the expression.
+ * @return Array holding attribute types.
+ */
+ public HashSet<AttributeType> getOpAttributes() {
return opAttributes;
}
@@ -231,16 +217,12 @@
* TargetAttr's operator value applied to the test result.
*/
- public static boolean isApplicable(AttributeType a,
- TargetAttr targetAttr) {
- boolean ret;
+ public static boolean isApplicable(AttributeType a, TargetAttr targetAttr) {
if(targetAttr.isAllUserAttributes() && targetAttr.isAllOpAttributes()) {
- ret =
- !targetAttr.getOperator().equals(EnumTargetOperator.NOT_EQUALITY);
- } else
- ret=evalAttrType(a, targetAttr);
-
- return ret;
+ return !targetAttr.getOperator().equals(EnumTargetOperator.NOT_EQUALITY);
+ } else {
+ return evalAttrType(a, targetAttr);
+ }
}
/**
@@ -269,10 +251,11 @@
private static boolean evalAttrType(AttributeType attrType, boolean allAttrs,
HashSet<AttributeType> attrs, EnumTargetOperator op) {
boolean ret = allAttrs || attrs.contains(attrType);
- if (op.equals(EnumTargetOperator.NOT_EQUALITY))
+ if ((allAttrs || !attrs.isEmpty())
+ && op.equals(EnumTargetOperator.NOT_EQUALITY))
{
return !ret;
}
return ret;
}
- }
+}
--
Gitblit v1.10.0